C++ 函数对象

来源:互联网 发布:苹果电脑编写代码软件 编辑:程序博客网 时间:2024/06/05 14:19

很好的blog:

文章1

结合stl的算法使用

http://blog.csdn.net/bonchoix/article/details/8050627
下面是练习代码

    class CStringSort    {    public:        bool operator() (const string &str1, const string &str2)        {            return str1 > str2;        }    };    set<string, CStringSort> myset;    myset.insert("A");    myset.insert("B");
    class SuccessiveNumGen    {    public:        SuccessiveNumGen(int origen = 0) :m_origen(origen){}        int operator()()        {            return m_origen++;        }    private:        int m_origen;    };    vector<int> dest;    generate_n(back_inserter(dest), 10, SuccessiveNumGen(3));    generate(++dest.begin(), --dest.end(), SuccessiveNumGen(10));
    class NoLess    {    public:        NoLess(int min = 0) :m_min(min){}        bool operator()(int value) const        {            return value >= m_min;        }    private:        int m_min;    };    vector<int> dest;    for (int i = 0; i < 20; ++i)        dest.push_back(i);    auto idx = find_if(dest.begin(), dest.end(), NoLess(10));

文章2

函数适配器

可以组合很多函数对象,搭配出更复杂的函数对象。(可以看文末的例子)

取反器