STL中SET排序函数

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

 #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)继承,并且重载()运算符即可.

posted @ 2014-01-21 10:56  晨曦语晴  阅读(2318)  评论(0编辑  收藏  举报