Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- template <class InIter>
- InIter dedup(InIter begin, InIter end)
- {
- InIter next{ begin };
- ++next;
- InIter out{ begin };
- while (begin != end)
- {
- if ((next != end) and (*begin != *next))
- {
- *out++ = *begin++;
- ++next;
- }
- else
- {
- std::advance(begin, 2);
- for (int cnt{ 0 }; next != end and cnt < 2; ++cnt, std::advance(next, 1));
- }
- }
- return out;
- }
- int main()
- {
- std::vector<int> arrA{ 6,1,4,2,8,9,11,26,2,7,8,11,2,2,3 };
- std::vector<int> arrB{ 1,8,29,2,2,9,11,1,2,5,8,34,12,9,8 };
- std::sort(arrA.begin(), arrA.end());
- std::sort(arrB.begin(), arrB.end());
- std::copy(arrA.begin(), arrA.end(), std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- std::copy(arrB.begin(), arrB.end(), std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- std::cout << '\n';
- auto aUinque{ std::unique(arrA.begin(), arrA.end()) };
- auto bUinque{std::unique(arrB.begin(), arrB.end())};
- std::copy(arrA.begin(), aUinque, std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- std::copy(arrB.begin(), bUinque, std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- std::cout << '\n';
- std::vector<int> res;
- std::merge(arrA.begin(), aUinque, arrB.begin(), bUinque, std::inserter(res, res.begin()));
- std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- std::cout << '\n';
- dedup(res.begin(), res.end());
- std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
- std::cout << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement