仿函数 C++
C++的仿函数(functor),是通过重载()运算符模拟函数行为的类.
- 仿函数不是函数,是个类
- 仿函数重载了()运算符,可以使用像函数一样;
void print(State* pastate)
{
pstate->print();
}
std::for_each(vect.begin(),vect.end(),&print);
class ShorterThan {
public:
explicit ShorterThan(int maxLength) : length(maxLength) {}
bool operator() (const string& str) const {
return str.length() < length;
}
private:
const int length;
};
count_if(myVector.begin(), myVector.end(), ShorterThan(length));//直接调用即可
//这里需要注意的是,不要纠结于语法问题:ShorterThan(length)似乎并没有调用operator()函数,其实它调用了,创建了一个临时对象。