我正在编写一个简单的程序来熟悉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不在函数范围内,而且我找不到绑定库。
我该怎么做才能解决问题?