set_union,set_intersection,set_difference,set_symmetric_difference

来源:互联网 发布:mysql主键可以为空吗 编辑:程序博客网 时间:2024/05/29 16:15

直接代码:

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