STL set集合算法

STL set集合运算算法
#include<iostream>
#include<set>
#include<vector>
#include<list>
#include<algorithm>
#include<string>
#include<iterator>
using namespace std;
//set 与map几乎相同 只不过set没有键值之分 键与值相同 所以不允许修改元素的值
//STL提供与set相关的集合相关算法
//STL中的集合与数学的集合不同 STL中set不允许键值重复 并且有序
/*
因为必须有序 所以这四个函数 只能set与multi_set或者有序集合才可用
A B两个集合 
set_union  求并集(A+B)
set_intersection 求交集(A^B)
set difference 求差集 (A-B)
set_symmetric_difference 求对称差集(A-B)U(B-A)
对称差可以从上边三个函数 得到
*/
int main(void)
{
	string Str1 = "abcde";
	string Str2 = "cdefgh";
	set<char> MySet1(Str1.begin(), Str1.end());
	set<char> MySet2(Str2.begin(),Str2.end());
	typedef set<char>::iterator S_Ite;
	S_Ite first1, first2, last1, last2;
	first1 = MySet1.begin();
	first2 = MySet2.begin();
	last1 = MySet1.end();
	last2 = MySet2.end();
	//set_union(first1,last1,first2,last2,ostream_iterator<char>(cout," "));
	//-----abcdefgh
	//set_difference(first1, last1, first2, last2, ostream_iterator<char>(cout, " "));
	//-----ab 
	//set_intersection(first1, last1, first2, last2, ostream_iterator<char>(cout, " "));
	//------cde
	//set_symmetric_difference(first1, last1, first2, last2, ostream_iterator<char>(cout, " "));
	//abfgh
	list<char> result(MySet1.size()+MySet2.size(),'#');
	//将集合运算的结果可以存入vector或者链表中但是大小是不确定的 需要删除
	list<char>::iterator ite = result.begin();
	ite=set_union(first1,last1,first2,last2,ite);
	//集合运算返回值 是输出迭代器的位置 因此可以直接删除 后序元素
	result.erase(ite,result.end());
	copy(result.begin(), result.end(), ostream_iterator<char>(cout, " "));
	
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值