`
java-mans
  • 浏览: 11429206 次
文章分类
社区版块
存档分类
最新评论

set_union,set_intersection,set_difference,set_symmetric_difference

 
阅读更多

直接代码:

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


分享到:
评论

相关推荐

    c++ STL set_difference set_intersection set_union 操作

    set_intersection 求两个容器的交, set_union 求两个容器的并。 set_symmetric_difference 求两个容器的差。 最后使用的时候注意要提前分配好最后的盛放容器,其大小最好是两个操作容器的和,然后需要根据返回的...

    set部分源码

    set_intersection、set_union、set_difference、set_symmetric_difference函数源码

    python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference

    python 并集union, 交集intersection, 差集difference, 对称差集symmetric_difference a,b,c = [1,2,3],[2,3,4],[3,4,5] print('------&gt;union') print('a,b取并集:',set(a).union(b)) print('a,b取并集:',set(a...

    c++ STL库容器之集合set代码实例

    set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些...

    stl详解 包括各种实例代码

    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

    C++ STL 开发技术导引(第6章)

    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....

    C++ STL开发技术导引(第5章)

    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....

    C++ STL开发技术导引(第3章)

    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....

    S2 演算原始碼

    STL提供了4個set相關的演算法,分別是並集(union)、交集(intersection)、差集(difference)和對稱差集(symmetric difference),這4個演算法接受的set必須是有序區間,都至少接受4個引數,分別表示兩個set區間...

    STL源码剖析.pdg

    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 ...

    STL 源码剖析(侯捷先生译著)

    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 ...

    -C++参考大全(第四版) (2010 年度畅销榜

    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最全代码

    # [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

    Data Structures Succinctly Part 1 Table of Contents The Story behind the Succinctly Series of Books ......................................................................................

Global site tag (gtag.js) - Google Analytics