fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <random>
  5.  
  6.  
  7. template<template<class,class...> class C, typename T, typename... Args>
  8. void no_dupes(C<T,Args...>& con)
  9. {
  10. auto it_last = std::end(con);
  11. for (auto it = std::begin(con); it != it_last; ++it)
  12. it_last = std::remove(std::next(it), it_last, *it);
  13. con.erase(it_last, std::end(con));
  14. }
  15.  
  16. int main()
  17. {
  18. std::random_device rd;
  19. std::default_random_engine rng(rd());
  20. std::uniform_int_distribution<> dist(1,8);
  21. std::function<int()> gen = [&](){ return dist(rng);};
  22.  
  23. // build random vector
  24. std::vector<int> data;
  25. data.reserve(40);
  26. std::generate_n(std::back_inserter(data), data.capacity(), gen);
  27. for (auto x : data)
  28. std::cout << x << ' ';
  29. std::cout << std::endl;
  30.  
  31. // remove dupes
  32. no_dupes(data);
  33. for (auto x : data)
  34. std::cout << x << ' ';
  35. std::cout << std::endl;
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
1 3 3 7 5 5 4 5 8 2 7 3 4 5 4 8 3 3 7 3 2 6 8 8 1 2 2 7 7 7 4 1 5 7 1 5 8 2 4 4 
1 3 7 5 4 8 2 6