Mega Code Archive

 
Categories / C++ Tutorial / STL Algorithms Modifying Sequence Operations
 

Use stable_partition algorithms

#include <algorithm> #include <vector> #include <string> #include <iostream> #include <iterator> using namespace std; bool above40(int n) { return (n > 4); } int main() {   const int N = 7;   int array0[N] = {5, 3, 1, 7, 6, 4, 2};   int array1[N];   copy(&array0[0], &array0[N], &array1[0]);   ostream_iterator<int> out(cout, " ");   cout << "Original sequence:                 ";   copy(&array1[0], &array1[N], out); cout << endl;   // Partition array1, putting numbers greater than 4   // first, followed by those less than or equal to 4,   // preserving relative order in each group:   int* split = stable_partition(&array1[0], &array1[N], above40);   cout << "Result of stable partitioning:     ";   copy(&array1[0], split, out); cout << "| ";   copy(split, &array1[N], out); cout << endl;   return 0; } Original sequence: 5 3 1 7 6 4 2 Result of stable partitioning: 5 7 6 | 3 1 4 2