#include<iostream>
#include<set>
#include<string>
using namespace std;
struct myComp{
bool operator()(const int &a,const int &b){
if(a!=b)
return a>b;
else
return a>b;
}
};
struct Info{
string name;
float score;
bool operator < (const Info &a) const{
return a.score<score;
}
};
int main()
{
/*元素的插入与终须排序*/
set<int> s;
s.insert(8);
s.insert(1);
s.insert(12);
s.insert(6);//第二次插入8,重复元素,不会插入
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++){
cout<<*it<<" ";
}
cout<<endl;
/*元素的反向遍历*/
set<int>::reverse_iterator rit;//定义反向迭代器
for(rit=s.rbegin();rit!=s.rend();rit++){
cout<<*rit<<" ";
}
cout<<endl;
/*元素的删除*/
s.erase(12);
for(rit=s.rbegin();rit!=s.rend();rit++){
cout<<*rit<<" ";
}
cout<<endl;
s.clear();
cout<<s.size()<<endl;
/*元素的检索*/
set<int> s1;
s1.insert(8);
s1.insert(1);
s1.insert(12);
s1.insert(6);
s1.insert(8);
set<int>::iterator it1;
it1=s1.find(6);
if(it!=s1.end())
cout<<*it1<<endl;
else
cout<<"not find it"<<endl;
it1=s1.find(20);
if(it1!=s1.end())
cout<<*it1<<endl;
else
cout<<"not find it"<<endl;
/*自定义比较函数*/
set<int,myComp>::iterator it2;
for(it2=s1.begin();it2!=s1.end();it2++){
cout<<*it2<<" ";
}
cout<<endl;
/*元素是结构体*/
set<Info> s2;
Info info;
info.name="Jack";
info.score=80.5;
s2.insert(info);
info.name="Tomi";
info.score=20.5;
s2.insert(info);
info.name="Nacy";
info.score=60.5;
s2.insert(info);
set<Info>::iterator it3;
for(it3=s2.begin();it3!=s2.end();it3++){
cout<<(*it3).name<<":"<<(*it3).score<<endl;
}
return 0;
}