The generic partial_sort algorithms with predicate

Started by aruljothi, Jun 11, 2009, 09:50 PM

Previous topic - Next topic

aruljothi


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