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>() 只是声明了一个临时对象。

猜你喜欢

转载自www.cnblogs.com/mindulmindul/p/12228749.html