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