酒鬼z

我自将心向明月,独卧沙场醉圆缺

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

原文地址:http://blog.csdn.net/factor2000/article/details/3936195

  1. //
  2. //alg_std::sort.cpp
  3. //
  4. #include <vector>
  5. #include <algorithm>
  6. #include <functional> // For greater<int>( )
  7. #include <iostream>
  8. using namespace std;
  9. // Return whether first element is greater than the second
  10. bool UDgreater ( int elem1, int elem2 )
  11. {
  12.     return elem1 > elem2;
  13. }
  14. class Csort
  15. {
  16. public:
  17. // Return whether first element is less than the second
  18.     bool operator () (int a,int b) const
  19.     {
  20.         return a<b;
  21.     };
  22. };
  23. int main( )
  24. {
  25.     vector <int> v1;
  26.     vector <int>::iterator Iter1;
  27.     int arr[12];
  28.     int i;
  29.     for ( i = 0 ; i <= 5 ; i++ )
  30.     {
  31.         v1.push_back( 2 * i );
  32.         arr[i]=2*i;
  33.     }
  34.     for ( i = 6 ; i <= 11 ; i++ )
  35.     {
  36.         arr[i]=23-2*i;
  37.     }
  38.     int ii;
  39.     for ( ii = 0 ; ii <= 5 ; ii++ )
  40.     {
  41.         v1.push_back( 2 * ii + 1 );
  42.     }
  43.     cout << "Original vector v1 = ( " ;
  44.     for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  45.         cout << *Iter1 << " ";
  46.     cout << ")" << endl;
  47.     cout << "Original array arr = ( " ;
  48.     for ( int n=0;n<12;n++ )
  49.         cout << arr[n] << " ";
  50.     cout << ")" << endl;
  51.     //std::sort 默认排序方式
  52.     sort( v1.begin( ), v1.end( ) );
  53.     cout << "Sorted vector v1 = ( " ;
  54.     for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  55.         cout << *Iter1 << " ";
  56.     cout << ")" << endl;
  57.     //使用自定义函数给数组排序,第三个参数为函数指针UDgreater
  58.     //第二个参数为数据最大地址的后一位指针&arr[12]
  59.     sort( &arr[0], &arr[12],UDgreater);
  60.     cout << "Resorted (UDgreater) array arr = ( " ;
  61.     for ( int n=0;n<12;n++ ) cout << arr[n] << " ";
  62.     cout << ")" << endl;
  63.     //使用自定义类的 重载operator() 函数给数组排序,第三个参数为【类名()
  64.     sort( &arr[0], &arr[12],Csort());
  65.     cout << "Resorted (Csort()) arr = ( " ;
  66.     for ( int n=0;n<12;n++ ) cout << arr[n] << " ";
  67.     cout << ")" << endl;
  68.     //使用<functional>库中 greater<int>( ) 给向量V1排序;
  69.     sort( v1.begin( ), v1.end( ), greater<int>( ) );
  70.     //sort( v1.begin( ), v1.end( ), Csort() );
  71.     cout << "Resorted (greater) vector v1 = ( " ;
  72.     for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  73.         cout << *Iter1 << " ";
  74.     cout << ")" << endl;
  75.     // A user-defined (UD) binary predicate can also be used
  76.     //sort( v1.begin( ), v1.end( ), UDgreater );
  77.     sort( v1.begin( ), v1.end( ),Csort());
  78.     cout << "Resorted (UDgreater) vector v1 = ( " ;
  79.     for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  80.         cout << *Iter1 << " ";
  81.     cout << ")" << endl;
  82.     getchar();
  83.     return 0;
  84. }
posted on 2013-12-04 13:27  酒鬼z  阅读(2184)  评论(0)    收藏  举报