在 STL 的 algorithm 头文件中定义了 3 种算法,用来检查在算法应用到序列中的元素上时,什么时候使谓词返回 true。none_of() 算法会返回 true,前提是序列中没有元素可以使谓词返回 true。
#include <algorithm>
template <class InputIterator, class UnaryPredicate>
bool none_of (InputIterator first, InputIterator last, UnaryPredicate pred);
参数 | 描述 |
---|---|
first | 输入迭代器 |
last | 输入迭代器 |
pred | 自定义比较规则 |
first, last 标示序列范围的输入迭代器。包括 first 指向的元素,但不包括 last。
pred 一个接受一个元素类型参数并返回一个 bool 值的一元函数。可以是一个指针或者函数对象。
该函数是当范围内的元素均不满足 pred 时,返回 true,否则返回 false.
使用 STL none_of 函数判断集合
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool isGreat(int i)
{
if(i >= 5)
{
return true;
}
else
{
return false;
}
}
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
vector<int> vi{1, 3, 5, 7};
if(none_of(vi.begin(), vi.end(), [](int n){return n%2==0;}))
{
cout << "all %2 != false" << endl;
}
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ none_of.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
none_of 函数会判断所有的元素只有所有元素都不符合要求,才会返回 true。
在 STL 的 algorithm 头文件中定义了 3 种算法,用来检查在算法应用到序列中的元素上时,什么时候使谓词返回 true。none_of() 算法会返回 true,前提是序列中没有元素可以使谓词返回 true。