Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

ptr_fun

类模板  <functional>

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));

将函数指针转换为函数对象
返回一个封装函数f的函数对象。

函数对象是其类定义成员函数operator()的对象。该成员函数允许使用与常规函数调用相同的语法来使用对象。 一些标准算法和适配器被设计用于函数对象。

它的行为定义如下:
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);
}

☲  模板参数


Arg, Arg1, Arg2
函数参数的类型。

Result
函数的返回类型。

☲  参数


f
指向函数的指针,接受一个参数(类型为Arg)或两个参数(类型为Arg1和Arg2)并返回一个类型为Result的值。

☉  返回值



一个函数对象,相当于f。
Pointer_to_unary_function和pointer_to_binary_function是函数对象类型, 分别派生自unary_function和binary_function。

☣  示例



// 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;
}

可能输出:
sum = 150

🍄  另请参阅



mem_fun 将成员函数转换为函数对象(指针版本)(类模板)
pointer_to_unary_function 从指针生成一元函数对象类(类模板)
pointer_to_binary_function 从指针生成二元函数对象类(类模板)
unary_function 一元函数对象基类 (类模板)
binary_function 二元函数对象基类 (类模板)

联系我们 免责声明 关于CandCplus 网站地图