Код:
#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <map>
#include <iterator>
using namespace std;
template <typename T>
void print (const T& a) {
for (const auto& e : a) cout << e << ' ';
cout << endl;
}
void example_vector ()
{
int p,n,m;
cin >> n;
cin >> m;
vector<int> v1(n);
for (int i=0; i< v1.size(); i++){
cin >> v1[i];
}
vector<int> v2(m);
for (int j=0; j< v2.size(); j++){
cin >> v2[j];
}
vector<int> v3, v4, v5, v6;
set_union (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v3));
set_intersection (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v4));
set_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v5));
set_symmetric_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v6));
p=v4.size();
cout << "INTERSECTION: ";
cout << p;
cout << endl;
cout << "set_union: "; print (v3);
cout << "set_intersection: "; print (v4);
cout << "set_difference: "; print (v5);
cout << "set_symmetric_difference: "; print (v6);
cout << endl;
}
int main () {
example_vector ();
return 0;
}

Второй массив отсортирован по "greater" а для обьединения используется "less" по умолчанию. Для правильного обьединения сортировки обоих массивов должны быть одинаково направлены и совпадать с типом сортировки set_union.
С++. Почему в методе set_union единица повторяется несколько раз? Код и скриншот ниже
Код:
#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <map>
#include <iterator>
using namespace std;
template <typename T>
void print (const T& a) {
for (const auto& e : a) cout << e << ' ';
cout << endl;
}
void example_vector ()
{
int p,n,m;
cin >> n;
cin >> m;
vector<int> v1(n);
for (int i=0; i< v1.size(); i++){
cin >> v1[i];
}
vector<int> v2(m);
for (int j=0; j< v2.size(); j++){
cin >> v2[j];
}
vector<int> v3, v4, v5, v6;
set_union (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v3));
set_intersection (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v4));
set_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v5));
set_symmetric_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v6));
p=v4.size();
cout << "INTERSECTION: ";
cout << p;
cout << endl;
cout << "set_union: "; print (v3);
cout << "set_intersection: "; print (v4);
cout << "set_difference: "; print (v5);
cout << "set_symmetric_difference: "; print (v6);
cout << endl;
}
int main () {
example_vector ();
return 0;
}
https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BD%D0%B0%D0%B4_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8