泛型算法:按条件查找元素算法find_if()、find_if_not()

泛型算法:查找元素算法find()

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版权协议,转载请附上原文出处链接和本声明。