Это зависит от того, сколько памяти зарезервировано для объекта типа std::vector
. Похоже, что когда push_back
был впервые выполнен, выделено память только для одного элемента. Когда был вызван второй раз push_back
, память была перераспределена для резервирования памяти для второго элемента. В этом случае элемент, который уже находится в векторе, копируется в новом месте. И затем добавляется второй элемент.
Вы можете зарезервировать достаточно памяти самостоятельно, чтобы избежать второго вызова конструктора копирования:
vector<Myint> myints;
myints.reserve( 2 );