C++利用find_if函数从容器中,挑取出符合条件的选项。
find_if(参数1,参数2,参数3);
参数1:初始迭代器
参数2:搜索范围终止迭代器
参数3:谓词,(函数对象别忘了后面的小括号)。或者是函数。或者是<functional>库里的仿函数(同样加小括号)
读者可以试着用其他容器代入,
本文先创建vector 命名v1 然后从中寻找大于40的整数。
每次从找到的迭代器的下一个位置开始,重新设置为搜索起点it1
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
class mycmp{
public:
bool operator()(int &val){
return val>40;
}
};
void test(){
vector <int>v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(40);
v1.push_back(68);
v1.push_back(50);
v1.push_back(95);
v1.push_back(17);
v1.push_back(57);
v1.push_back(27);
v1.push_back(7);
vector<int>::iterator it1=v1.begin();
while(it1!=v1.end()){
vector<int>::iterator it2=find_if(it1,v1.end(),mycmp());
if(it2!=v1.end()){
cout<<*(it2)<<endl;
}
else{
return;
}
it2++;
if(it2!=v1.end()){
it1=it2;
}
else{return;}
}
}
int main()
{
test();
system("pause");
return 0;
}