Я пытаюсь передать std :: vector настраиваемых объектов по ссылке на конструктор, который копирует / перемещает его в другой частный член std :: vector, но каким-то образом копирование его элемент за элементом в a for l oop генерирует меньший размер программы, чем при одновременном перемещении всего вектора.
Обычно в моем конструкторе есть этот код:
constructor(std::vector<object*>& newVec)
{
for(int i=0; i<newVec.size(); ++i)
this->vec.push_back(newVec[i]);
}
, который генерирует Linux исполняемый файл, размер которого меньше с использованием std :: move следующим образом:
constructor(std::vector<object*>& newVec)
{
this->vec=std::move(newVec);
}
Только переключая эти два фрагмента, я перехожу с 30 КБ на 35 КБ.
PS: Объект, содержащийся в векторе, отличается от объект-конструктор.
Может ли кто-нибудь объяснить мне, почему первая версия более оптимизирована, чем вторая?