Mega Code Archive

 
Categories / C++ / Algorithm
 

The generic partial_sort algorithms with predicate

#include <vector> #include <algorithm> #include <iostream> #include <iterator> using namespace std; class comp_last {  public:   bool operator()(int x, int y) const     // Compare x and y based on their last base-10 digits:   {     return x  10;   } }; int main() {   const int N = 20;   vector<int> vector0;   for (int i = 0; i < N; ++i)    vector0.push_back(i);   vector<int> vector1 = vector0;   ostream_iterator<int> out(cout, " ");   cout << "Before sorting:\n";   copy(vector1.begin(), vector1.end(), out);   cout << endl;   sort(vector1.begin(), vector1.end(), comp_last());     cout << "After sorting by last digits with sort:\n";   copy(vector1.begin(), vector1.end(), out);   cout << endl << endl;   vector1 = vector0;   reverse(vector1.begin(), vector1.end());   cout << "Before sorting:\n";   copy(vector1.begin(), vector1.end(), out);   cout << endl << endl;   partial_sort(vector1.begin(), vector1.begin() + 5,vector1.end(), comp_last());   cout << "After sorting with partial_sort to get 5 values with smallest last d igits:\n";   copy(vector1.begin(), vector1.end(), out);   cout << endl << endl;   return 0; }  /*  Before sorting: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 After sorting by last digits with sort: 10 0 11 1 12 2 13 3 4 14 5 15 6 16 7 17 8 18 9 19 Before sorting: 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 After sorting with partial_sort to get 5 values with smallest last digits: 10 0 11 1 12 19 18 17 16 15 9 8 7 6 5 4 14 13 3 2  */