fork download
  1. #include <iostream>
  2. #include <iterator>
  3. #include <algorithm>
  4. #include <functional>
  5.  
  6.  
  7. template<typename ForwardIterator>
  8. ForwardIterator nonunique(ForwardIterator first, ForwardIterator const last) {
  9. using namespace std::placeholders;
  10.  
  11. using value_type = typename std::iterator_traits<ForwardIterator>::value_type;
  12.  
  13. auto result = first;
  14. while (first != last) {
  15. auto const afterFirst = std::next(first);
  16. auto const notEqualTo = std::bind(std::not_equal_to<value_type>(), _1, std::cref(*first));
  17. auto const localLast = std::find_if(afterFirst, last, notEqualTo);
  18.  
  19. if (localLast != afterFirst) {
  20. *result++ = *first;
  21. first = localLast;
  22. } else {
  23. ++first;
  24. }
  25. }
  26.  
  27. return result;
  28. }
  29.  
  30.  
  31. int main() {
  32. std::vector<int> sequence(std::istream_iterator<int>{std::cin}, std::istream_iterator<int>{});
  33.  
  34. std::sort(std::begin(sequence), std::end(sequence));
  35. auto const last = nonunique(std::begin(sequence), std::end(sequence));
  36.  
  37. if (last != std::begin(sequence)) {
  38. std::copy(std::begin(sequence), last, std::ostream_iterator<int>{std::cout, "\t"});
  39. std::cout << std::endl;
  40. } else {
  41. std::cout << "all elements are unique" << std::endl;
  42. }
  43. }
Success #stdin #stdout 0s 3480KB
stdin
1 1 2 3 2 2 1 4 5 6 8 5 5
stdout
1	2	5