#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> v1 = { 1, 2, 3, 4, 5, 6, 7, 10 };
std::vector<int> v2 = { 1, 4, 6, 8, 9 };
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::vector<int> inter;
std::set_intersection(v1.begin(), v1.end(),
v2.begin(), v2.end(),
back_inserter(inter));
v1.erase(set_difference(v1.begin(), v1.end(),
inter.begin(), inter.end(),
v1.begin()), v1.end());
std::copy(v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, " "));
v2.erase(set_difference(v2.begin(), v2.end(),
inter.begin(), inter.end(),
v2.begin()), v2.end());
std::copy(v2.begin(), v2.end(), std::ostream_iterator<int>(std::cout, " "));
}
/*
run:
2 3 5 7 10 8 9
*/