1、find_if()
find()元素查找时判定元素相等依赖于元素自身“==”的操作。相比之下,find_if()函数可以依据自定义的查找条件来查找元素。
find_if()返回第一个符合条件的元素。找不到则返回尾迭代器。
QStringList list;
list<<"aa"<<"bb"<<"cc"<<"dd"<<"cc"<<"dd";
auto findIfResult = std::find_if(list.begin(),list.end(),[](const QString & string)
{
if(string == "cc")
return true;
else
return false;
});
qDebug()<<*findIfResult;


大于6的数有7、8、9
这里返回了第一个大于6的数7。
2、find_if_not()
find_if_not()函数是根据条件取反后查找的。
QVector<int> list;
for (int i = 1;i < 20;++i)
{
list << i;
}
auto it = std::find_if_not(list.begin(), list.end(), [](int n)
{
return n < 8;
});
qDebug()<<*it;

1-19中小于8的数是1-7,这里取反操作,1-7的补集是8-19,返回第一个元素8。
版权声明:本文为kenfan1647原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。