#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;
}
STL sort使用及重载
最新推荐文章于 2023-08-02 15:43:56 发布