仿函数
using namespace std; class AddValue { private: int value_; public: AddValue(int v) : value_(v) { } void operator() (int &elem) const { elem += value_; } }; int main() { list<int> coll; for (int i = 1; i <= 9; ++i) { coll.push_back(i); } for_each(coll.begin(), coll.end(), AddValue(2)); for_each(coll.begin(), coll.end(), AddValue(3)); return 0; }
和传统的函数相比, 仿函数让函数拥有不同的状态,提高了灵活性。以往的函数,需要传入参数控制状态或者是写成几个不同的函数,而仿函数可以写成更加灵活的函数。