Skip to content
Related Articles

Related Articles

Improve Article

std::is_partitioned in C++

  • Difficulty Level : Medium
  • Last Updated : 02 Aug, 2017

std::is_partitioned is used for finding whether the range[first, last) is partitioned or not. A range is said to be partitioned with respect to a condition if all the elements for which the condition evaluates to true precede those for which it is false.

It is defined in the header file . If the range in which we want to check whether it is partitioned or not is empty, then this function returns true.
Syntax:

 bool is_partitioned (InputIterator first, 
                      InputIterator last, UnaryPredicate pred);

first: Input iterator to the first element in the range.
last: Input iterator to the last element in the range.
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 belongs to
the first group (if true, the element is expected before all
the elements for which it returns false).
The function shall not modify its argument.
This can either be a function pointer or a function object.


Returns: It returns true if all the elements in the range [first, last)
for which pred returns true precede those for which it returns false.
Otherwise it returns false.
If the range is empty, the function returns true.




// C++ program to demonstrate the use of std::is_partitioned
#include <iostream>
#include <algorithm>
#include <vector>
  
// Defining the BinaryFunction
bool pred(int a)
{
    return (a % 3 == 0);
}
  
using namespace std;
int main()
{
    // Declaring first vector
    vector<int> v1 = { 3, 6, 9, 10, 11, 13 };
  
    // Using std::is_partitioned
    bool b = std::is_partitioned(v1.begin(), v1.end(), pred);
  
    if (b == 1) {
        cout << "It is partitioned";
    } else {
        cout << "It is not partitioned.";
    }
    return 0;
}

Output:

It is partitioned

Explanation: Here, in this program firstly, we have stored elements in a vector, and then we are checking whether all the elements divisible by 3 are present before those which are not divisible by 3. Since, this condition evaluates to true for the taken vector therefore, this function returns 1 here, as it is partitioned.

Another Example



  • To check whether all the odd and even elements are partitioned




    // C++ program to demonstrate the use of std::is_partitioned
    #include <iostream>
    #include <algorithm>
    #include <vector>
      
    // Defining the BinaryFunction
    bool pred(int a)
    {
        return (a % 2 == 0);
    }
      
    using namespace std;
    int main()
    {
        // Declaring first vector
        vector<int> v1 = { 2, 4, 6, 3, 5, 7, 9 };
      
        // Using std::is_partitioned
        bool b = std::is_partitioned(v1.begin(), v1.end(), pred);
      
        if (b == 1) {
            cout << "All the even no. are present before odd no.";
        } else {
            cout << "All the even no. are not present before odd no.";
        }
      
        // Inserting an even no. at the end of v1
        // so std::is_partitioned returns false
        v1.push_back(16);
      
        // Now again using std::is_partitioned
        b = std::is_partitioned(v1.begin(), v1.end(), pred);
      
        if (b == 1) {
            cout << "\nAll the even no. are present before odd no.";
        } else {
            cout << "\nAll the even no. are not present before odd no.";
        }
      
        return 0;
    }

    Output:

    All the even no. are present before odd no.
    All the even no. are not present before odd no.
    

This article is contributed by Mrigendra Singh. 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.

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :