類模板
<functional>

std::pointer_to_binary_function

template <class Arg1, class Arg2, class Result> class pointer_to_binary_function;
從指向函式的指標生成二元函式物件類
從指向接受兩個引數(型別為Arg1Arg2)並返回一個值(型別為Result)的函式指標生成二元函式物件類。

pointer_to_binary_function通常用作一個型別。函式 ptr_fun(也在標頭檔案 <functional> 中定義)可用於直接構造該型別的物件。

此類派生自 binary_function,通常定義為

1
2
3
4
5
6
7
8
9
10
template <class Arg1, class Arg2, class Result>
  class pointer_to_binary_function : public binary_function <Arg1,Arg2,Result>
{
protected:
  Result(*pfunc)(Arg1,Arg2);
public:
  explicit pointer_to_binary_function ( Result (*f)(Arg1,Arg2) ) : pfunc (f) {}
  Result operator() (Arg1 x, Arg2 y) const
    { return pfunc(x,y); }
};

成員

建構函式
從指向接受兩個引數(型別為Arg1Arg2)並返回一個值(型別為Result)的函式指標生成二元函式物件類。
operator()
成員函式接受兩個引數,將它們傳遞給構造時使用的指標所指向的函式,並將其返回的值作為自己的返回值轉發。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// pointer_to_binary_function example
#include <iostream>
#include <functional>
#include <algorithm>
#include <cmath>
using namespace std;

int main () {
  pointer_to_binary_function <double,double,double> PowObject (pow);
  double numbers[] = {1.0, 2.0, 3.0, 4.0, 5.0};
  double squares[5];
  transform (numbers, numbers+5, squares, bind2nd(PowObject,2) );
  for (int i=0; i<5; i++)
    cout << squares[i] << " ";
  cout << endl;
  return 0;
}

可能的輸出

1 4 9 16 25


另見