Use <set>and <algorithm>.
Then std provides std::set_union, std::set_intersectionetc.
Example:
#include <set>
#include <algorithm>
...
std::set<int> s1, s2;
for(int i = 0; i < 20; ++i) s1.insert(i);
for(int i = 10; i < 30; ++i) s2.insert(i);
std::set<int> my_union, my_intersection;
std::set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), std::inserter(my_union, my_union.begin()));
std::set_interesction(s1.begin(), s1.end(), s2.begin(), s2.end(), std::inserter(my_intersection, my_intersection.begin()));
source
share