function template
<functional>
std::ptr_fun
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()的類物件。該成員函式允許物件以與常規函式呼叫相同的語法來使用。幾個標準的
演算法和
介面卡被設計用來與函式物件一起使用。
它的定義與以下行為相同:
1 2 3 4 5 6 7 8 9 10 11
|
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。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
// 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
- 一元函式物件基類 (類模板)