c++杂技(一):c++中的仿函数,把对象当成函数用
c++中,有操作符 operator() ,可以在对象后加上操作符 () ,使程序看起来像是函数执行。
#include<iostream> using namespace std; template<typename T> class print { public: void operator() (const T& elem) { cout << elem << " "; } };
可以先声明一个print的对象,再调用操作符 () ,如下
print<int> p; p(234);
如果p以后不再被使用,可以直接声明一个临时对象,然后调用操作符 ()
print<int>()(234);
通常的使用方法如下
int ia[6]={0,12,2,3,54,5}; vector<int> iv (ia, ia + 6); for_each(iv.begin(), iv.end(), print<int>());//调用stl算法 print<int>()(123);
注意print<int>() 只是声明了一个临时对象。