仿函数

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;
}

 

和传统的函数相比, 仿函数让函数拥有不同的状态,提高了灵活性。以往的函数,需要传入参数控制状态或者是写成几个不同的函数,而仿函数可以写成更加灵活的函数。

posted @ 2013-09-06 10:20  calabashdad  阅读(317)  评论(0编辑  收藏  举报