  1 //sortVec2.cpp  --- sorting vector again,  with Comparator
  2 //@CopyLeft by tsaiwn@csie.nctu.edu.tw
  3 #include <iostream>
  4 #include <vector>
  5 #include <algorithm>
  6 using namespace std;
  7 
  8 bool compare (int i,int j) { cout << " ha "; return (i<j); }
  9 bool comp222(int i,int j) { cout << " C "; return (i>j); } //Descending
 10 
 11  // the following defines a Comparator class "Sorter"
 12 typedef struct {   // struct default public:
 13   bool operator( ) (int i,int j) { cout << " S "; return (i<j);}
 14 } Sorter;    // this is a Comparator
 15 
 16 Sorter myObject;    // this is a Comparator Object
 17 
 18 void printV(vector<int> aVector) {
 19   vector<int>::iterator it;
 20   // print out content:
 21   cout << "\n Vector contains:";
 22   for (it=aVector.begin(); it!=aVector.end(); ++it)
 23      cout << " " << *it;
 24   cout << endl;
 25 }
 26 
 27 int main () {
 28   int myints[] = {32,71,12,45,26,80,53,33};
 29   vector<int> myvector (myints, myints+8);   
 30                                          // 32 71 12 45 26 80 53 33
 31   printV(myvector);
 32 
 33   // using default comparison (operator <):
 34   //sort(myvector.begin( ), myvector.end( ));
 35   sort(myvector.begin( ), myvector.begin( )+4); 
 36          // sort only first 4 items     //(12 32 45 71)26 80 53 33
 37   printV(myvector);
 38 
 39   // using compare function to sort    // 12 32 45 71(26 33 53 80)
 40   sort(myvector.begin()+4, myvector.end(), compare); 
 41   printV(myvector);
 42 
 43   // using an Object as comparator       //(12 26 32 33 45 53 71 80)
 44   sort(myvector.begin(), myvector.end(), myObject); 
 45   printV(myvector);
 46   cout << "Now sort all data with function comp222( ) ...";
 47   sort(myvector.begin( ), myvector.end( ), comp222); 
 48   printV(myvector);
 49 
 50   return 0;
 51 }
 52 /******
 53 C:\testc\STL>g++ sortVec2.cpp
 54 
 55 C:\testc\STL>a
 56 
 57  Vector contains: 32 71 12 45 26 80 53 33
 58 
 59  Vector contains: 12 32 45 71 26 80 53 33
 60  ha  ha  ha  ha  ha  ha  ha  ha  ha
 61  Vector contains: 12 32 45 71 26 33 53 80
 62  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S  S
 63  Vector contains: 12 26 32 33 45 53 71 80
 64 Now sort all data with function comp222( ) ... C  C  C  C  C  C  C
 65  Vector contains: 80 71 53 45 33 32 26 12
 66 
 67 C:\testc\STL>
 68 **********************/
