STL sort使用及重载

来源:互联网 发布:淘宝批量编辑宝贝 编辑:程序博客网 时间:2024/05/29 13:53
#include <algorithm>  #include <iostream>  #include <vector>  using namespace std;  class MyClass  {  public:      int id;      MyClass() {}      MyClass(int i): id( i ) {}      bool operator < ( const MyClass &b ) const      {           return id < b.id;      }           bool operator > ( const MyClass &b ) const      {           return id > b.id;      }  };  /* bool operator < ( MyClass a, MyClass b ) {     return a.id < b.id; } */  bool compare( MyClass a, MyClass b )  {      return a.id < b.id;  }  int main()  {      //数组      cout<<"数组"<<endl;      MyClass arr[10];      srand(time(NULL));      for( int i = 0; i < 10; i++ )          arr[i].id = rand()%101;      cout<<"before sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<arr[i].id<<endl;           sort(arr,arr+10,less<MyClass>());      cout<<"after sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<arr[i].id<<endl;      //动态数组vector      cout<<"动态数组vector"<<endl;      vector<MyClass> list;      for( int i = 0; i < 10; i++ )          list.push_back( MyClass( rand()%101 ) );      cout<<"before sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list[i].id<<endl;           sort(list.begin(),list.end(),greater<MyClass>());      cout<<"after sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list[i].id<<endl;           //定义比较函数      cout<<"定义比较函数"<<endl;      vector<MyClass> list2;      for( int i = 0; i < 10; i++ )          list2.push_back( MyClass( rand()%101 ) );      cout<<"before sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list2[i].id<<endl;           sort(list2.begin(),list2.end(),compare);      cout<<"after sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list2[i].id<<endl;               //使得类本身就是可以比较的      cout<<"使得类本身就是可以比较的"<<endl;      vector<MyClass> list3;      for( int i = 0; i < 10; i++ )          list3.push_back( MyClass( rand()%101 ) );      cout<<"before sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list3[i].id<<endl;           sort(list3.begin(),list3.end());      cout<<"after sort"<<endl;      for( int i = 0; i < 10; i++ )          cout<<list3[i].id<<endl;           return 0;  }


原创粉丝点击