直接代码:
//set_union
#include<iostream>
#include<string>
#include<vector>
#include<string>
#include<algorithm>
#include<functional>
using namespace std;
bool fanxu(int a,int b){
return a<b;
}
int main(){
int a[]={1,2,2,4,6,7,7,9};
int b[]={2,2,2,3,6,6,8,9};
vector<int>v(a,a+8);
vector<int>vv(b,b+8);
vector<int>vvv;
set_union(v.begin(),v.end(),vv.begin(),vv.end(),back_inserter(vvv));//并集,两边都有,取多的那边
for(vector<int>::iterator itera=vvv.begin();itera!=vvv.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
set_union(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "),fanxu);
cout<<endl;
system("pause");
return 0;
}
set_intersection
#include<iostream>
#include<string>
#include<vector>
#include<string>
#include<algorithm>
#include<functional>
using namespace std;
bool fanxu(int a,int b){
return a<b;
}
int main(){
int a[]={1,2,2,4,6,7,7,9};
int b[]={2,2,2,3,6,6,8,9};
vector<int>v(a,a+8);
vector<int>vv(b,b+8);
vector<int>vvv;
set_intersection(v.begin(),v.end(),vv.begin(),vv.end(),inserter(vvv,vvv.begin()));//交集,抵消之后的。
for(vector<int>::iterator itera=vvv.begin();itera!=vvv.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
set_intersection(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "),fanxu);
cout<<endl;
system("pause");
return 0;
}
set_difference
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
bool fanxu(int a,int b){
return a<b;
}
int main(){
int a[]={1,2,2,4,6,7,7,9};
int b[]={2,2,2,3,6,6,8,9};
vector<int>v(a,a+8);
vector<int>vv(b,b+8);
vector<int>vvv;
set_difference(v.begin(),v.end(),vv.begin(),vv.end(),back_inserter(vvv));//差集,只能在第一区间出现,不能在第二区间出现
for(vector<int>::iterator itera=vvv.begin();itera!=vvv.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
set_difference(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "),fanxu);
cout<<endl;
system("pause");
return 0;
}
//set_symmetric_difference
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
bool fanxu(int a,int b){
return a<b;
}
int main(){
int a[]={1,2,2,4,6,7,7,9};
int b[]={2,2,2,3,6,6,8,9};
vector<int>v(a,a+8);
vector<int>vv(b,b+8);
vector<int>vvv;
set_symmetric_difference(v.begin(),v.end(),vv.begin(),vv.end(),back_inserter(vvv));//不可能同时出现在两个区间中,抵消掉
for(vector<int>::iterator itera=vvv.begin();itera!=vvv.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
set_symmetric_difference(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "),fanxu);
cout<<endl;
system("pause");
return 0;
}
//综合
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
bool fanxu(int a,int b){
return a<b;
}
int main(){
int a[]={1,2,2,4,6,7,7,9};
int b[]={2,2,2,3,6,6,8,9};
vector<int>v(a,a+8);
vector<int>vv(b,b+8);
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
copy(vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"merge: ";
merge(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"set_union: ";
set_union(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"set_intersection: ";
set_intersection(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"set_difference: ";
set_difference(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"set_symmetric_difference: ";
set_symmetric_difference(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}
分享到:
相关推荐
set_intersection 求两个容器的交, set_union 求两个容器的并。 set_symmetric_difference 求两个容器的差。 最后使用的时候注意要提前分配好最后的盛放容器,其大小最好是两个操作容器的和,然后需要根据返回的...
set_intersection、set_union、set_difference、set_symmetric_difference函数源码
python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference a,b,c = [1,2,3],[2,3,4],[3,4,5] print('------>union') print('a,b取并集:',set(a).union(b)) print('a,b取并集:',set(a...
set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些...
17. set_union, set_intersection, set_difference, set_symmetric_diffrece 36 18. next_permutation / prev_permutation 36 19. power 37 20. heap operations 38 21. min / max / swap 39 22. numeric_limits 39
23.22 集合求异set_symmetric_difference 399 23.23 最小值min 401 23.24 最大值max 402 23.25 最小元素min_element 403 23.26 最大元素max_element 404 23.27 字典比较lexicographical_compare 405 23....
23.22 集合求异set_symmetric_difference 399 23.23 最小值min 401 23.24 最大值max 402 23.25 最小元素min_element 403 23.26 最大元素max_element 404 23.27 字典比较lexicographical_compare 405 23....
23.22 集合求异set_symmetric_difference 399 23.23 最小值min 401 23.24 最大值max 402 23.25 最小元素min_element 403 23.26 最大元素max_element 404 23.27 字典比较lexicographical_compare 405 23....
STL提供了4個set相關的演算法,分別是並集(union)、交集(intersection)、差集(difference)和對稱差集(symmetric difference),這4個演算法接受的set必須是有序區間,都至少接受4個引數,分別表示兩個set區間...
3.4.2 迭代器相应型别之二difference_type 090 3.4.3 迭代器相应型别之三pointer_type 091 3.4.4 迭代器相应型别之四reference_type 091 3.4.5 迭代器相应型别之五iterator_category 092 以advanced() 为例 093 ...
3.4.2 迭代器相应型别之二difference_type 090 3.4.3 迭代器相应型别之三pointer_type 091 3.4.4 迭代器相应型别之四reference_type 091 3.4.5 迭代器相应型别之五iterator_category 092 以advanced() 为例 093 ...
34.45 set_symmetric_difference 34.46 set_union 34.47 sort 34.48 sort_heap 34.49 stable_partition 34.50 stable_sort 34.51 swap 34.52 swap_ranges 34.53 transform 34.54 unique和unique_copy 34.55 upper_...
# [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...
Data Structures Succinctly Part 1 Table of Contents The Story behind the Succinctly Series of Books ......................................................................................