std::none_of in C++

Returns true if pred returns false for all the elements in the range [first, last] or if the range is empty, and false otherwise.

Syntax :

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. 

Return type :
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;
}

Output:

Array contains : 2 4 6 8 12 0
No negative elements in the range.

Practical Application :
std :: none_of function returns true if certain condition returns false for all the elements in the range [first, last] or if the range is empty, and false otherwise.

1. Check if array contains all even number or odd or both.

// 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;
}

OUTPUT :

Array contains : 2 4 6 8 12 0 24 32
Array contains even number only

2. To check whether array contains all prime number or not.

// 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;
}

OUTPUT :

Array contains : 4 6 8 12 0
All numbers are composite.

This article is contributed by Sachin Bisht. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.

Recommended Posts:



0 Average Difficulty : 0/5.0
No votes yet.