#include <iostream>
#include <set>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
void print_vector(vector <int> &v)
{
for (int i = 0; i < v.size(); i++)
{
if (i) cout << ' ';
cout << v[i];
}
cout << endl;
}
void Input_set(set<int> &s, int n)
{
while (n--)
{
int num;
cin >> num;
s.insert(num);
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
set <int> setA, setB;
cin >> n;
Input_set(setA, n);
cin >> n;
Input_set(setB, n);
vector <int> v1, v2, v3;
set_intersection(setA.begin(), setA.end(), setB.begin(), setB.end(), back_inserter(v1));
set_union(setA.begin(), setA.end(), setB.begin(), setB.end(), back_inserter(v2));
set_difference(setA.begin(), setA.end(), setB.begin(), setB.end(), back_inserter(v3));
print_vector(v1);
print_vector(v2);
print_vector(v3);
system("pause");
return 0;
}
back_inserter:创建一个使用push_back的迭代器
inserter:此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素将被插入到给定迭代器所表示的元素之前。
front_inserter:创建一个使用push_front的迭代器(元素总是插入到容器第一个元素之前)