STL学习(二)set容器学习(二)-自定义比较函数

来源:互联网 发布:复制淘宝口令怎么使用 编辑:程序博客网 时间:2024/05/30 02:22
#include<iostream>#include<set>using namespace std;typedef struct{  int a,b;  char s;}newtype;struct compare{  bool operator()(const newtype &a, const newtype &b) const  {    return a.s<b.s;  }};set<newtype,compare>element;class newtype2{public:  int a;  char s;  char get_s(void) const {return s;};};struct compare2{  bool operator()(const newtype2 &a,const newtype2 &b) const  {    return a.get_s() < b.get_s();  }};int main(){ newtype a,b,c,d,t; a.a=1; a.s='a'; b.a=2; b.s='c'; c.a=4; c.s='b'; d.a=3; d.s='d'; element.insert(a); element.insert(b); element.insert(c); element.insert(d); set<newtype,compare>::iterator it; for(it=element.begin(); it!=element.end();it++)    cout<<(*it).a<<" "; cout<<endl; for(it=element.begin(); it!=element.end();it++)   cout<<(*it).s<<" "; cout<<endl; set<newtype2,compare2> e2; newtype2 t1,t2,t3; t1.a=1;t1.s='c'; t2.a=2;t2.s='a'; t3.a=3;t3.s='b'; e2.insert(t1); e2.insert(t2); e2.insert(t3); set<newtype2,compare2>::iterator it2; for(it2=e2.begin();it2!=e2.end();it2++) {   cout<<(*it2).a<<" "; } cout<<endl; for(it2=e2.begin();it2!=e2.end();it2++) {   cout<<(*it2).s<<" "; } cout<<endl;  return 0;}

0 0