fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4.  
  5. struct Element
  6. {
  7. Element(int number) :
  8. number_ID(number)
  9. {
  10. std::cout << "Element number " << number_ID
  11. << " is being constructed\n";
  12. }
  13. Element(const Element &src) :
  14. number_ID(src.number_ID)
  15. {
  16. std::cout << "Element number " << number_ID << " is being copied\n";
  17. }
  18. Element(const Element &&src) :
  19. number_ID(src.number_ID)
  20. {
  21. std::cout << "Element number " << number_ID << " is being moved\n";
  22. }
  23. ~Element()
  24. {
  25. std::cout << "Element number " << number_ID << " is being destroyed\n";
  26. }
  27.  
  28. Element& operator=(const Element &src)
  29. {
  30. number_ID = src.number_ID;
  31. std::cout << "Element number " << number_ID << " is being assigned\n";
  32. return *this;
  33. }
  34. Element& operator=(Element &&src)
  35. {
  36. number_ID = src.number_ID;
  37. std::cout << "Element number " << number_ID << " is being move assigned\n";
  38. return *this;
  39. }
  40.  
  41. int number_ID;
  42. };
  43.  
  44. void createVector()
  45. {
  46. std::vector<Element> objArr;
  47. objArr.reserve(10); // So it doesn't have to reallocate
  48.  
  49. objArr.emplace_back(1);
  50. objArr.emplace_back(2);
  51. objArr.emplace_back(3);
  52. objArr.emplace_back(4);
  53.  
  54. objArr.erase(objArr.begin()); // When I erase the first element only element 4 has destructor called
  55. }
  56.  
  57. int main()
  58. {
  59. createVector();
  60. }
  61.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Element number 1 is being constructed
Element number 2 is being constructed
Element number 3 is being constructed
Element number 4 is being constructed
Element number 2 is being move assigned
Element number 3 is being move assigned
Element number 4 is being move assigned
Element number 4 is being destroyed
Element number 2 is being destroyed
Element number 3 is being destroyed
Element number 4 is being destroyed