关于stl里set容器的自定义排序

最近结合stl看数据结构,对许多原本半生不熟的知识都有了点领悟,大家知道stl里无论是向量还是容器的sort算法都很有用也很方便.但是似乎大家一直都是用int类型来初始化这些对象,那我用自定义的一个结构来对初始化这些对象,并且想对结构里的某一个元素的大小来排序,该怎么办呢,我上网查了些资料,并根据自己的学习与琢磨,找到了比较简单的方法.那么不说废话,看代码:

view plaincopy to clipboardprint?
#include<iostream>   
#include<set>   
using namespace std;   
struct stu{   
    char a[10];   
    int s;   
  
};   
class stu1:greater<stu>   
{   
public:   
    bool    operator () (stu b1,stu b2) const{   
        return b1.s<b2.s;   
    }   
};   
main()   
{   
    set<stu,stu1 > a;   
    for(int i=0;i<3;i++){   
        stu d;   
        cin>>d.a>>d.s;   
        a.insert(d);   
    }   
    set<stu,stu1 >::iterator l;   
    for(l=a.begin();l!=a.end();l++){   
        cout<<l->a<<" "<<l->s<<endl;   
    }   
  
  
}  
#include<iostream>
#include<set>
using namespace std;
struct stu{
 char a[10];
 int s;

};
class stu1:greater<stu>
{
public:
 bool operator () (stu b1,stu b2) const{
  return b1.s<b2.s;
 }
};
main()
{
 set<stu,stu1 > a;
 for(int i=0;i<3;i++){
  stu d;
  cin>>d.a>>d.s;
  a.insert(d);
 }
 set<stu,stu1 >::iterator l;
 for(l=a.begin();l!=a.end();l++){
  cout<<l->a<<" "<<l->s<<endl;
 }


}


代码比较简单就是对stl里greater(当然也可以是less)继承,并且重载()运算符即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值