#include <iostream>
#include <set>
#include <string>
using namespace std;
struct myComp{
bool operator()(int a,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(4);
s.insert(9);
s.insert(8);
s.insert(5);
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(9);
for(it=s.begin();it!=s.end();it++){
cout << *it << ' ';
} cout << endl;
it=s.find(8);
if(it!=s.end()){
cout << *it << endl;
}
else{
cout <<"not find it" << endl;
}
set<int,myComp> a;
a.insert(5);
a.insert(8);
a.insert(7);
a.insert(8);
a.insert(2);
set<int,myComp>::iterator i;
for(i=a.begin();i!=a.end();i++){
cout << *i << ' ';
} cout << endl;
set<Info> f;
Info info;
info.name="John" ;
info.score=80.5;
f.insert(info);
info.name="Jake";
info.score=90.5;
f.insert(info);
info.name="Tom";
info.score=65.3;
f.insert(info);
set<Info>::iterator j;
for(j=f.begin();j!=f.end();j++){
cout << (*j).name << ' ' << (*j).score << endl;
} cout << endl;
return 0;
}