на оптимальность не претендует, но...
Код | #include <vector> #include <set> #include <iterator> #include <algorithm> #include <iostream>
template <typename T> std::vector<T> find_dups(const T* arr, size_t N) { std::vector<T> out; std::set<T> s(arr, arr + N); std::multiset<T> ms(arr, arr + N); std::set<T> res; std::set_difference(ms.begin(), ms.end(), s.begin(), s.end(), std::inserter(res, res.begin())); std::copy(res.begin(), res.end(), std::back_inserter(out)); return (out); }
void test_dups() { int Array[10]={1,3,5,3,9,3,4,6,4,5};
std::vector<int> v = find_dups(Array, 10); std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, "\n")); }
|
|