STL find_if_not函数

STL find_if_not函数算法

STL 中,find_if_not() 函数和 find_if() 函数的功能恰好相反,find_if() 函数用于查找符合谓词函数规则的第一个元素,而 find_if_not() 函数则用于查找第一个不符合谓词函数规则的元素。

STL find_if_not函数详解

头文件

#include <algorithm>

语法

InputIterator find_if_not (InputIterator first, InputIterator last, UnaryPredicate pred);

参数

参数 描述
first 输入迭代器
last 输入迭代器
pred 自定义查找规则

说明

其中,first 和 last 都为输入迭代器,其组合 [first, last) 用于指定要查找的区域;pred 用于自定义查找规则。

技术细节

和 find_if() 函数一样,find_if_not() 函数也适用于所有的容器,包括所有序列式容器和关联式容器。

同样,该函数也会返回一个输入迭代器,当 find_if_not() 函数查找成功时,该迭代器指向的是查找到的那个元素;反之,如果查找失败,该迭代器的指向和 last 迭代器相同。

案例

STL find_if_not函数

使用 STL find_if_not 函数查找集合

#include <iostream> #include <algorithm> #include <vector> using namespace std; bool mycomp(int i) { return ((i % 2) == 1); } int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<int> myvector{99, 101, 200, 206, 301}; vector<int>::iterator it = find_if_not(myvector.begin(), myvector.end(), mycomp); cout << "*it = " << *it; cout << endl; return 0; }

我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ find_if_not.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

12_STL find_if_not函数.png

我们首先,使用了 find_if_not 函数,加上自定义规则在 vector 中查找了元素。

STL find_if_not函数总结

在 STL 中,find_if_not() 函数和 find_if() 函数的功能恰好相反,find_if() 函数用于查找符合谓词函数规则的第一个元素,而 find_if_not() 函数则用于查找第一个不符合谓词函数规则的元素。