fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. struct TestDelete
  5. {
  6. int integer;
  7. TestDelete(int i) : integer(i)
  8. {
  9. std::cout <<"TestDelete constructor for "<< integer <<"\n\n";
  10. }
  11.  
  12. TestDelete(const TestDelete& rhs) : integer(rhs.integer) {
  13. std::cout << "TestDelete copy constructor for " << integer << "\n\n";
  14. }
  15.  
  16. TestDelete(TestDelete&& rhs) : integer(rhs.integer) {
  17. std::cout << "TestDelete move constructor for " << integer << "\n\n";
  18. }
  19.  
  20. ~TestDelete()
  21. {
  22. std::cout <<"TestDelete destructor for "<< integer<<"\n\n";
  23. }
  24. };
  25.  
  26. int main () {
  27.  
  28. std::cout << "\noriginal:\n\n";
  29. std::vector<TestDelete> pt;
  30. pt.push_back(TestDelete(1));
  31. pt.push_back(TestDelete(2));
  32.  
  33. std::cout <<"\nimprovement:\n\n";
  34.  
  35. std::vector<TestDelete> pt2;
  36. pt2.reserve(2);
  37. pt2.push_back(TestDelete(1));
  38. pt2.push_back(TestDelete(2));
  39.  
  40. std::cout << "\nLet the desruction commence.\n\n";
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 2988KB
stdin
Standard input is empty
stdout
original:

TestDelete constructor for 1

TestDelete move constructor for 1

TestDelete destructor for 1

TestDelete constructor for 2

TestDelete move constructor for 2

TestDelete copy constructor for 1

TestDelete destructor for 1

TestDelete destructor for 2


improvement:

TestDelete constructor for 1

TestDelete move constructor for 1

TestDelete destructor for 1

TestDelete constructor for 2

TestDelete move constructor for 2

TestDelete destructor for 2


Let the desruction commence.

TestDelete destructor for 1

TestDelete destructor for 2

TestDelete destructor for 1

TestDelete destructor for 2