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