比较简单,所以没有注释。
#include<iostream>
#include<set>
#include<algorithm>
#include<functional>
using namespace std;
int main(){
set<int,greater<int> >s;
s.insert(4);
s.insert(3);
s.insert(5);
s.insert(1);
s.insert(6);
s.insert(2);
s.insert(5);
set<int,greater<int> >::iterator itera;
for(itera=s.begin();itera!=s.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
pair<set<int,greater<int> >::iterator,bool>status=s.insert(4);
if(status.second){
cout<<"4 inserted as element "<<distance(s.begin(),status.first)+1<<endl;
}else{
cout<<"4 already exists "<<endl;
}
set<int,greater<int> >ss;
ss=s;
copy(ss.begin(),ss.end(),ostream_iterator<int>(cout," "));
cout<<endl;
ss.erase(ss.begin(),ss.find(3));
int num;
num=ss.erase(5);
cout<<num<<" elements removed"<<endl;
copy(ss.begin(),ss.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<set>
#include<functional>
#include<algorithm>
using namespace std;
int main(){
multiset<int,greater<int> >m;
m.insert(4);
m.insert(3);
m.insert(5);
m.insert(1);
m.insert(6);
m.insert(2);
m.insert(3);
multiset<int,greater<int> >::iterator itera;
for(itera=m.begin();itera!=m.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
multiset<int,greater<int> >::iterator iterb;
iterb=m.insert(4);
cout<<"4 inserted "<<distance(m.begin(),iterb)+1<<endl;
multiset<int>mm(m.begin(),m.end());
copy(mm.begin(),mm.end(),ostream_iterator<int>(cout," "));
cout<<endl;
mm.erase(mm.begin(),mm.find(3));
int num=mm.erase(4);
cout<<"remove 4: "<<num<<endl;
copy(mm.begin(),mm.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<set>
#include<algorithm>
#include<functional>
using namespace std;
template<typename T>
class RuntimeCmp{
public:
enum cmp_mode{normal,reverse};
private:
cmp_mode mode;
public:
RuntimeCmp(cmp_mode m=normal):mode(m){
}
bool operator()(const T& t1,const T& t2)const{
return mode==normal?t1<t2:t2<t1;
}
bool operator==(const RuntimeCmp& rc){
return mode==rc.mode;
}
};
void fill(set<int,RuntimeCmp<int> >& s){
s.insert(4);
s.insert(7);
s.insert(5);
s.insert(1);
s.insert(6);
s.insert(2);
s.insert(5);
}
int main(){
set<int,RuntimeCmp<int> >s;
fill(s);
for(set<int,RuntimeCmp<int> >::iterator itera=s.begin();itera!=s.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
RuntimeCmp<int>reverse_order(RuntimeCmp<int>::reverse);
set<int,RuntimeCmp<int> >ss(reverse_order);
fill(ss);
for(set<int,RuntimeCmp<int> >::iterator itera=ss.begin();itera!=ss.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
s=ss;
s.insert(3);
for(set<int,RuntimeCmp<int> >::iterator itera=s.begin();itera!=s.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
if(s.value_comp()==ss.value_comp()){
cout<<"the same sorting"<<endl;
}else{
cout<<"the different sorting"<<endl;
}
system("pause");
return 0;
}