std :: find_if比较函数编译器错误

时间:2013-07-28 12:19:07

标签: c++ stl

我正在编写一个简单的程序来熟悉c ++及其核心库,因为我刚刚开始研究它。

C++ std::find with a custom comparator接受了答案(https://stackoverflow.com/a/14322617/611901)后,我写了

struct special_compare : public std::unary_function<composerRating, bool>
    {
        explicit special_compare(size_t id) : id_(id) {}
        bool operator() (const composerRating &cr_arg) const {
            return cr_arg.composerID == id_;
        }
        size_t id_;
    };

    vector<composerRating>::iterator crIter = find_if(ratings.begin, ratings.end(), special_compare(ID));

但编译器抱怨find_if没有采用这种论点。我在其他答案中看到他们使用bind,但是当他们需要调用类的成员时使用它,而我正在传递类(struct)本身。另外,我宁愿避免使用boost,因为我只是编写了几行程序,而且接口std :: bind不在函数范围内,而且我找不到绑定库。

我该怎么做才能解决问题?

0 个答案:

没有答案