Below are the functions that are used for partition operations:
is_partitioned [C++11] : Test whether range is partitioned
partition : Partition range in two
stable_partition : Partition range in two – stable ordering
partition_copy [C++11] : Partition range into two
partition_point [C++11] : Get partition point
#include <iostream> #include <unordered_map> #include <algorithm> //for more tutorials on C, C++, STL, DS visit www.ProDeveloperTutorial.com using namespace std; bool IsOdd (int i) { return (i%2)==1; } int main () { std::array<int,7> foo {1,2,3,4,5,6,7}; // print contents: std::cout << "foo:"; for (int& x:foo) std::cout << ' ' << x; if ( std::is_partitioned(foo.begin(),foo.end(),IsOdd) ) std::cout << " (partitioned)\n"; else std::cout << " (not partitioned)\n"; // partition array: std::partition (foo.begin(),foo.end(),IsOdd); // print contents again: std::cout << "foo:"; for (int& x:foo) std::cout << ' ' << x; if ( std::is_partitioned(foo.begin(),foo.end(),IsOdd) ) std::cout << " (partitioned)\n"; else std::cout << " (not partitioned)\n"; return 0; }