1: template <class InputIterator1, class InputIterator2, class OutputIterator>
2: OutputIterator set_difference (InputIterator1 first1, InputIterator1 last1, 3: InputIterator2 first2, InputIterator2 last2, 4: OutputIterator result) 5: {6: while (first1!=last1 && first2!=last2)
7: {8: if (*first1<*first2)
9: { 10: *result = *first1; 11: ++result; 12: ++first1; 13: }14: else if (*first2<*first1)
15: { 16: ++first2; 17: }18: else
19: { 20: ++first1; 21: ++first2; 22: } 23: }24: return std::copy(first1,last1,result);
25: }两个数组,先做好排序,
然后分别从头对比,对于两集合中相同的元素,就添加到result集合中去,否则继续调整两个集合的指针,以便找到下一个可能相同的位置。