Как уже говорили другие, push_back
вставит копию в вектор.
Если у вас есть компилятор с некоторой поддержкой C ++ 11, возможно, что вы можете избежать этой копии, создавая объект напрямуюв вектор.Новая функция emplace_back
делает это:
agents.emplace_back(100, *level, agents, level->Pickups(), D3DXCOLOR(1.0F, 0.4f, 0.4f, 1.0f));
Кроме того, если компилятор имеет поддержку семантики перемещения в C ++ 11, push_back
будет выполнять операцию перемещения вместо операции копирования, если перемещениеконструктор доступен для Agent
, потому что вы передаете его временно.