fork download
  1. #include<chrono>
  2. #include<deque>
  3. #include<iostream>
  4. #include<vector>
  5. #include<utility> //forward
  6. using namespace std;
  7.  
  8. template<class Func,class ... Args>
  9. chrono::milliseconds::rep calc_time(Func &&func,Args &&...args)
  10. {
  11. chrono::high_resolution_clock::time_point begin{chrono::high_resolution_clock::now()};
  12. std::forward<Func>(func)(std::forward<Args>(args)...);
  13. chrono::high_resolution_clock::time_point end{chrono::high_resolution_clock::now()};
  14. return chrono::duration_cast<std::chrono::milliseconds>(end-begin).count();
  15. }
  16.  
  17. constexpr int iteration{100000000};
  18. const vector<int> test(100,0);
  19. size_t de;
  20. size_t ve;
  21. size_t ve2;
  22.  
  23. void test_deque()
  24. {
  25. deque<vector<int>> deq;
  26. for(int i{0};i!=iteration;++i)
  27. deq.emplace_back(test);
  28. de=deq.size();
  29. }
  30.  
  31. void test_vector()
  32. {
  33. vector<vector<int>> vec;
  34. for(int i{0};i!=iteration;++i)
  35. vec.emplace_back(test);
  36. ve=vec.size();
  37. }
  38.  
  39. void test_vector2()
  40. {
  41. vector<vector<int>> vec;
  42. vec.reserve(iteration);
  43. for(int i{0};i!=iteration;++i)
  44. vec.emplace_back(test);
  45. ve2=vec.size();
  46. }
  47.  
  48. int main()
  49. {
  50. cout<<calc_time(test_deque)<<endl;
  51. cout<<calc_time(test_vector)<<endl;
  52. cout<<calc_time(test_vector2)<<endl;
  53. }
Runtime error #stdin #stdout #stderr 1.25s 1043456KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc