#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;
}
STL學習(二)set容器學習(二)-自定義比較函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.