STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
来源:互联网 发布:淘宝显示地址怎么改 编辑:程序博客网 时间:2024/05/17 01:18
返回
includes,set_intersection,set_union,set_difference,set_symmetric_difference都是集合论中的操作。这些算法都假定指定区间类的元素已经有序。
includes:A∈B
set_intersection:A∩B
set_union:A∪B
set_difference:A-B
set_symmetric_difference:(A-B)∪(B-A)
1,includes
声明:
#include <algorithm>template <class inputItr1, class inputItr2>bool includes(inputItr1 first1, inputItr1 last1, inputItr2 first2, inputItr2 last2);template <class inputItr1, class inputItr2, class binaryPredicate>bool includes(inputItr1 first1, inputItr1 last1, inputItr2,binaryPredicate op);
示例代码:
#include <iostream>#include <list>#include <string>#include <numeric>#include <iterator>#include <vector>#include <functional>#include <algorithm>using namespace std;int main() {char setA[5] = {'A','B','C','D','E'};char setB[10] = {'A','B','C','D','E','F','I','J','K','L'};char setC[5] = {'A','E','I','O','U'};ostream_iterator<char> screen(cout, " ");cout << "setA:" << endl;copy(setA,setA+5,screen);cout << endl;cout << "setB:" << endl;copy(setB,setB+10,screen);cout << endl;cout << "setC:" << endl;copy(setC,setC+5,screen);cout << endl;if (includes(setB,setB+10,setA,setA+5)){cout << "setA is a subset of setB" << endl;} else {cout << "setA is not a subset of setB" << endl;}if (includes(setB,setB+10,setC,setC+5)){cout << "setC is a subset of setB" << endl;} else {cout << "setC is not a subset of setB" << endl;}return 0;}
运行结果:
charList:
a b c d e
charList:
A B C D E
list
2 8 5 1 7 11 3
4 16 10 2 14 22 6
list
4 16 10 2 14 22 6
2,set_intersection,set_union
声明:
#include <algorithm>template <class inputItr1, class inputItr2,class outputItr>outputItr set_intersection(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst);template <class inputItr1, class inputItr2,class outputItr,class binaryPredicate>outputItr set_intersection(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst,binaryPredicate op);template <class inputItr1, class inputItr2,class outputItr>outputItr set_union(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst);template <class inputItr1, class inputItr2,class outputItr,class binaryPredicate>outputItr set_union(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst,binaryPredicate op);
示例代码:
#include <iostream>#include <list>#include <string>#include <numeric>#include <iterator>#include <vector>#include <functional>#include <algorithm>using namespace std;int main() {int setA[5] = {2,4,5,7,8};int setB[7] = {1,2,3,4,5,6,7};int setC[5] = {2,5,8,8,15};int setD[6] = {1,4,4,6,7,12};int AunionB[10];int AunionC[10];int BunionD[15];int AintersectB[10];int AintersectC[10];int * lastElement;ostream_iterator<int> screen(cout," ");cout << "setA:" << endl;copy(setA,setA+5,screen);cout << endl;cout << "setB:" << endl;copy(setB,setB+7,screen);cout << endl;cout << "setC:" << endl;copy(setC,setC+5,screen);cout << endl;cout << "setD:" << endl;copy(setD,setD+6,screen);cout << endl;// set_unionlastElement = set_union(setA,setA+5,setB,setB+7,AunionB);cout << "AunionB:" << endl;copy(AunionB,lastElement,screen);cout << endl;lastElement = set_union(setA,setA+5,setC,setC+5,AunionC);cout << "AunionC:" << endl;copy(AunionC,lastElement,screen);cout << endl;lastElement = set_union(setB,setB+7,setD,setD+6,BunionD);cout << "BunionD:" << endl;copy(BunionD,lastElement,screen);cout << endl;// set_intersectionlastElement = set_intersection(setA, setA+5,setB,setB+7,AintersectB);cout << "AintersectB:" << endl;copy(AintersectB,lastElement,screen);cout << endl;lastElement = set_intersection(setA, setA+5,setC,setC+5,AintersectC);cout << "AintersectC:" << endl;copy(AintersectC,lastElement,screen);cout << endl;return 0;}
运行结果:
charList:
a b c d e
charList:
A B C D E
list
2 8 5 1 7 11 3
4 16 10 2 14 22 6
list
4 16 10 2 14 22 6
3 set_difference,set_symmetric_difference
声明:
#include <algorithm>template <class inputItr1, class inputItr2,class outputItr>outputItr set_difference(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst);template <class inputItr1, class inputItr2,class outputItr,class binaryPredicate>outputItr set_difference(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst,binaryPredicate op);template <class inputItr1, class inputItr2,class outputItr>outputItr set_symmetric_difference(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst);template <class inputItr1, class inputItr2,class outputItr,class binaryPredicate>outputItr set_symmetric_difference(inputItr1 first1, inputItr1 last1, inputItr2 first2,inputItr2 last2,outputItr destFirst,binaryPredicate op);
示例代码:
#include <iostream>#include <list>#include <string>#include <numeric>#include <iterator>#include <vector>#include <functional>#include <algorithm>using namespace std;int main() {int setA[5] = {2,4,5,7,8};int setB[7] = {3,4,5,6,7,8,10};int setC[5] = {1,5,6,8,15};int AdifferenceC[5];int BsymDiffC[10];int * lastElement;ostream_iterator<int> screen(cout," ");cout << "setA:" << endl;copy(setA,setA+5,screen);cout << endl;cout << "setB:" << endl;copy(setB,setB+7,screen);cout << endl;cout << "setC:" << endl;copy(setC,setC+5,screen);cout << endl;// set_differencelastElement = set_difference(setA,setA+5,setC,setC+5,AdifferenceC);cout << "AdifferenceC:" << endl;copy(AdifferenceC,lastElement,screen);cout << endl;// set_symmetric_differenc 对称差lastElement = set_symmetric_difference(setB,setB+7,setC,setC+5,BsymDiffC);cout << "BsymDiffC:" << endl;copy(BsymDiffC,lastElement,screen);cout << endl;return 0;}
运行结果:
setA:
2 4 5 7 8
setB:
3 4 5 6 7 8 10
setC:
1 5 6 8 15
AdifferenceC:
2 4 7
BsymDiffC:
1 3 4 7 10 15
2 4 5 7 8
setB:
3 4 5 6 7 8 10
setC:
1 5 6 8 15
AdifferenceC:
2 4 7
BsymDiffC:
1 3 4 7 10 15
2 0
- STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
- STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
- STL之set_union、set_intersection、set_difference、set_symmetric_difference
- C++ STL merge,set_union,set_intersection,set_difference,set_symmetric_difference
- set_union,set_intersection,set_difference,set_symmetric_difference
- STL set_difference set_intersection set_union 操作
- 泛型算法系列35:set_difference()&&set_intersection()&&set_symmetric_difference()&&set_union()
- C++集合运算函数总结-merge、set_union、set_difference、set_symmetric_difference、set_intersection
- C++ set_union,set_intersection,set_difference
- STL algorithm算法set_symmetric_difference,set_union(54)
- STL algorithm算法set_difference,set_intersection(53)
- set_union set_intersection
- stl之includes
- vector set_union() /set_intersection【集合合并/交集】
- 泛型算法:有序集合set_union和set_intersection
- stl中的set_difference的使用
- set_symmetric_difference
- C++ STL set_union的用法
- STL 容器类型
- 转化率的因素
- 无聊
- 发个自定义Xshell颜色主题Color Schemes
- 2012-09-25 14:01 Xcode升级后的Bug处理
- STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
- linux安装笔记
- Java之Socket与HTTP区别
- Java电话号码和手机号码正则验证
- 自动战斗的计算过程
- SpringMVC结合ajaxfileupload.js实现文件无刷新上传
- TCP/IP、Http、Socket的区别
- js弹出层
- windows获得文件大小