當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ std::none_of用法及代碼示例


如果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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。