现在的位置: 首页 > 综合 > 正文

set_union,set_intersection,set_difference,set_symmetric_difference

2013年08月10日 ⁄ 综合 ⁄ 共 3406字 ⁄ 字号 评论关闭

直接代码:

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

 

【上篇】
【下篇】

抱歉!评论已关闭.