Если v
необходимо изменить размер внутреннего буфера, он обычно выделяет полностью новую область памяти, поэтому ему нужно скопировать все объекты, которые были ранее в векторе, в новое место. Это делается с помощью обычного копирования, поэтому вызывается конструктор копирования.
Вы должны называть reserve()
на векторе, чтобы зарезервировать хранилище вверх, если вы можете оценить, сколько элементов вам понадобится.
Обратите внимание, что поведение изменения размера / роста для std::vector
зависит от реализации, поэтому ваш образец кода будет давать разные результаты с различными стандартными реализациями библиотек.