set和multiset

97 篇文章 0 订阅
92 篇文章 0 订阅

比较简单,所以没有注释。

#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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值