template <class Arg, class Result> pointer_to_unary_function<Arg,Result> ptr_fun (Result (*f)(Arg)); template <class Arg1, class Arg2, class Result> pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun (Result (*f)(Arg1,Arg2)); |
template <class Arg, class Result> pointer_to_unary_function<Arg,Result> ptr_fun (Result (*f)(Arg)) { return pointer_to_unary_function<Arg,Result>(f); } template <class Arg1, class Arg2, class Result> pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun (Result (*f)(Arg1,Arg2)) { return pointer_to_binary_function<Arg1,Arg2,Result>(f); } |
// ptr_fun example #include <iostream> #include <functional> #include <algorithm> #include <cstdlib> #include <numeric> using namespace std; int main () { char* foo[] = {"10","20","30","40","50"}; int bar[5]; int sum; transform (foo, foo+5, bar, ptr_fun(atoi) ); sum = accumulate (bar, bar+5, 0); cout << "sum = " << sum << endl; return 0; } |
mem_fun | 将成员函数转换为函数对象(指针版本)(类模板) |
pointer_to_unary_function | 从指针生成一元函数对象类(类模板) |
pointer_to_binary_function | 从指针生成二元函数对象类(类模板) |
unary_function | 一元函数对象基类 (类模板) |
binary_function | 二元函数对象基类 (类模板) |