本文共 1497 字,大约阅读时间需要 4 分钟。
#include#include #include #include #include using namespace std;//两集合的合集template OutputIterator _set_union (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result){ while (true) { if (first1==last1) return copy(first2,last2,result); if (first2==last2) return copy(first1,last1,result); if (*first1<*first2) { *result = *first1; ++first1; } else if (*first2<*first1) { *result = *first2; ++first2; } else { *result = *first1; ++first1; ++first2; } ++result; }}//两集合的交集template 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;}//A-B的差集template OutputIterator set_difference (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result){ while (first1!=last1 && first2!=last2) { if (*first1<*first2) { *result = *first1; ++result; ++first1; } else if (*first2<*first1) ++first2; else { ++first1; ++first2; } } return copy(first1,last1,result);}int main(){ array t1 = {3,5,7,11,13,17,19,23}; array t2 = {3,5,7,11,13,17,19,23}; array t3; set_union(t1.begin(),t1.end(),t2.begin(),t2.end(),t3.begin()); for_each(t3.begin(),t3.end(),[](int i){cout< <
转载地址:http://hfvvi.baihongyu.com/