fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <chrono>
  5. using namespace std;
  6.  
  7. template<typename T>
  8. void removeDuplicates(std::vector<T>& vec)
  9. {
  10. auto start = std::chrono::high_resolution_clock::now();
  11. std::sort(vec.begin(), vec.end());
  12. vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
  13. auto end = std::chrono::high_resolution_clock::now();
  14. auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
  15. std::cout << elapsed.count() << std::endl;
  16. }
  17.  
  18. template<typename T>
  19. struct Container
  20. {
  21. typedef T Type;
  22. };
  23.  
  24. template<typename T>
  25. T removeRepeats(T const& v)
  26. {
  27. auto start = std::chrono::high_resolution_clock::now();
  28. T results;
  29. for(auto it = std::begin(v) ; it != std::end(v) ; ++it) {
  30. auto foundElement = std::find(std::begin(results), std::end(results), *it);
  31. if(foundElement == std::end(results))
  32. results.push_back(*it);
  33. else
  34. std::cout << "Duplicate found: " << *it << std::endl;
  35. }
  36. auto end = std::chrono::high_resolution_clock::now();
  37. auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
  38. std::cout << elapsed.count() << std::endl;
  39. return results;
  40. }
  41.  
  42. int main() {
  43.  
  44. Container<std::vector<int>>::Type input { 1, -10, 2, 1, 3, -10, -80 };
  45. auto results = removeRepeats(input);
  46.  
  47. std::vector<int> in { 1, -10, 2, 1, 3, -10, -80 };
  48. removeDuplicates(in);
  49. return 0;
  50. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
Duplicate found: 1
Duplicate found: -10
98517
753