1
我想了解find_if功能如何工作的,我下面在此参考的例子:C++ find_if功能:
http://www.cplusplus.com/reference/algorithm/find_if/
当我按照上述参考的例子中,这意味着当我使用main(),一切正常。但是,当我尝试包括一个类内部的例子(如我如下图所示),当我编译我得到这个错误:
error: argument of type ‘bool (A::)(int)’ does not match ‘bool (A::*)(int)’
里面我的课:
bool A::IsOdd (int i) {
return ((i%2)==1);
}
void A::function(){
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "The first odd value is " << *it << '\n';
}
谁能帮助我了解为什么这是怎么回事?
+1为全局建议。这不是一门课程,一切都需要在课堂上进行,并从中获得收益。当然,另一种选择(除了一个非常相似的函子),希望是一个lambda,一个简单的'[](i){return i%2;}'。 – chris 2013-03-02 18:47:04
我尝试了全球的建议,它的工作。谢谢! – FranXh 2013-03-02 20:14:24