find提供了一个对容器的查找,而find_if更倾向于提供了对对象的查找。使用它们时需要包含头文件#include<algorithm>
//find提供原始容器的查找
std::list<int>listFind;
for (int i = 0; i < 3;i++)
{
listFind.push_back(i);
}
std::list<int>::iterator ite = find(listFind.begin(), listFind.end(), 2);//find 查找listFind中为2的数。
if (ite!=listFind.end())
{
//找到了
}
else
{
//没有找到
}
find_if假如我们要比较的对象是个结构体,怎样通过类似的find找到我们要找到的值呢?
typedef struct MyStruct //定义一个Mystruct的结构体
{
int a;
int b;
}
vector<testStruct> MyStruct;
auto itrFind = find_if(Mystruct.begin(), Mystruct.end(), [](Mystruct)
{
return Mystruct.a > 2 ;
});
if(itrFind != testStructVector.end())
{
//找到了
}
else
{
//没有找到
}