STL set集合算法
2016-03-17 22:32
204 查看
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; }
相关文章推荐
- Android开发最佳实践
- nyoj523亡命逃窜
- 找最小值(只用一个变量)
- 百度地图API试用--(初次尝试)
- 对代理方法的理解iOS
- 二叉树重建
- 数组
- linux日志
- windows server git
- 设计模式C++学习笔记之四(Multition多例模式)
- 54. Spiral Matrix LeetCode
- 跳槽半年的一些想法
- 由于数组赋值超过定义的范围造成的错误
- ubuntu 14.04 mysql 主从配置
- C语言小编程之判断一个数是否是2的n次方的巧妙方法
- 设计模式之工厂方法模式及代码示例
- 类的构造函数
- angular 关于 factory、service、provider的相关用法
- DrawerLayout + Toolbar
- Hibernate中get方法和load方法的区别