直接代码:
//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; }