说明
将一个普通函数包装成函数对象。
此函数与关联类型从 C++11 起被弃用,被更通用的 std::function 和 std::ref 所替代。
头文件
#include <functional>
例子
#include <string>
#include <iostream>
#include <algorithm>
#include <functional>
bool isvowel(char c)
{
return std::string("aeoiuAEIOU").find(c) != std::string::npos;
}
int main()
{
std::string s = "Hello, world!";
std::copy_if(s.begin(), s.end(), std::ostreambuf_iterator<char>(std::cout),
std::not1(std::ptr_fun(isvowel)));
}
结果:
Hll, wrld!
上面的例子是把isvowel通过ptr_fun包装成函数对象传给std::not1().
C++11 替用方案 :
可将 std::not1(std::ptr_fun(isvowel)) 改为 std::not1(std::cref(isvowel)) 或者 std::not1(std::function<bool(char)>(isvowel))
参考
https://zh.cppreference.com/w/cpp/utility/functional/ptr_fun
http://www.cplusplus.com/reference/functional/ptr_fun/






网友评论