如果pred对范围[first,last]中的所有元素返回false或范围为空,则返回true,否则返回false。
用法:
Template: bool none_of(InputIterator first, InputIterator last, UnaryPredicate pred); first, last Input iterators to the initial and final positions in a sequence. The range used is [first, last], which contains all the elements between first and last, including the element pointed by first but not the element pointed by last. pred Unary function that accepts an element in the range as argument and returns a value convertible to bool. The value returned indicates whether the element fulfills the condition checked by this function. The function shall not modify its argument. This can either be a function pointer or a function object. 返回类型: true if pred returns false for all the elements in the range [first, last] or if the range is empty, and false otherwise.
// CPP program to illustrate std::none_of
#include <iostream> // cout
#include <algorithm> // none_of
using namespace std;
// function to check whether the
// element is negative or not
bool comp(int a) { return a < 0; }
// Driver code
int main()
{
int arr[] = { 2, 4, 6, 8, 12, 0 };
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Array contains:";
for (int i = 0; i < n; i++)
cout << ' ' << arr[i];
cout << "\n";
if (none_of(arr, arr+n, comp))
cout << "No negative elements in the range.\n";
else
cout << "There is at least one negative"
" element in the array range.\n";
return 0;
}
输出:
Array contains:2 4 6 8 12 0 No negative elements in the range.
实际应用:
如果特定条件对范围[first,last]中的所有元素返回false或范围为空,则std::none_of函数返回true,否则返回false。
1.检查数组是否包含所有偶数或奇数或两者。
// CPP program to illustrate std::none_of
#include <iostream> // cout
#include <algorithm> // none_of
using namespace std;
// functions to check whether the
// element is even or odd
bool isEven(int a) { return (a % 2); }
bool isOdd(int a) { return (a % 2 == 0); }
// Driver code
int main()
{
int arr[] = { 2, 4, 6, 8, 12, 0 };
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Array contains:";
for (int i = 0; i < n; i++)
cout << ' ' << arr[i];
cout << "\n";
bool even = none_of(arr, arr + n, isEven);
bool odd = none_of(arr, arr + n, isOdd);
if ((!even) && (!odd))
cout << "Contains both even and"
" odd number\n";
else if ((!even) && odd)
cout << "Contains odd number only\n";
else if (even && (!odd))
cout << "Contains even number only\n";
else
cout << "Array is empty\n";
return 0;
}
输出:
Array contains:2 4 6 8 12 0 24 32 Array contains even number only
2.检查数组是否包含所有素数。
// CPP program to illustrate std::none_of
#include <iostream> // cout
#include <algorithm> // none_of
using namespace std;
// Function reference:https://www.geeksforgeeks.org/primality-test-set-1-introduction-and-school-method/
bool isPrime(int n)
{
// Corner cases
if (n <= 1) return false;
if (n <= 3) return true;
// This is checked so that we can skip
// middle five numbers in below loop
if (n%2 == 0 || n%3 == 0)
return false;
for (int i=5; i*i<=n; i=i+6)
if (n%i == 0 || n%(i+2) == 0)
return false;
return true;
}
// Driver code
int main()
{
int arr[] = { 4, 6, 8, 12, 0 };
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Array contains:";
for (int i = 0; i < n; i++)
cout << ' ' << arr[i];
cout << "\n";
if (none_of(arr, arr+n, isPrime))
cout << "All numbers are composite.\n";
else
cout << "There are primes in array \n";
return 0;
}
输出:
Array contains:4 6 8 12 0 All numbers are composite.
相关用法
注:本文由纯净天空筛选整理自 std::none_of in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。