STL sort使用及重载

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值