#include
求交集:
set_intersection(first1,last1,first2,last2, result)
求集合差:set_difference(first1,last1,first2,last2, result)
合并两个集合:set_union(first1,last1,first2,last2, result)
上述所传递的容器必须是排序的
1 2 3 4 5
| sort(vm.begin(), vm.end()); sort(vn.begin(), vn.end()); vector<int> result; set_intersection(vm.begin(), vm.end(), vn.begin(), vn.end(), inserter(result, result.begin())); result.erase(unique(result.begin(), result.end()), result.end());
|
set_intersection实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| template <class InputIterator1, class InputIterator2, class OutputIterator> OutputIterator set_intersection (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result){ while (first1!=last1 && first2!=last2) { if (*first1<*first2) ++first1; else if (*first2<*first1) ++first2; else { *result = *first1; ++result; ++first1; ++first2; } } return result;
|