Отличный вопрос.Это тот тип вопроса, который мы все должны задавать себе снова и снова, чтобы понять, что происходит с используемой памятью.Когда элемент вектора создается путем помещения другого объекта в вектор ...
v2.push_back(v1);
, создается копия v1 для вставки в v2.
std :: vector сохраняет всю память непрерывной, поэтому редко используется возможность избежать этой копии при использовании std :: vector.
С другими типами контейнеров STL может быть возможноизбегайте копирования, если жизнь v1 заканчивается во время вставки, что подразумевает использование конструктора перемещения.Тем не менее, это обычно не происходит с std :: vector.