Я пытаюсь скопировать определенные элементы из одного вектора в другой вектор, который содержит объекты shared_ptr.Скопируйте элементы из одного вектора в другой вектор
Я не хочу ссылку, но уникальную копию этого объекта, помещенного в другой вектор. Весь смысл этого заключается в том, чтобы заполнить listEnvironmentStatic игровым объектом и когда начнется игра, все будет скопировано в listEnvironment для моделирования, и когда игроки захотят сбросить карту, listEnvironment еще раз скопирует все из listEnvironmentStatic, и каждый объект возвращается к его первоначальное местоположение.
this->listEnvironment.insert(this->listEnvironment.end(), this->listEnvironmentStatic.begin(), this->listEnvironmentStatic.end());
Использование std :: copy и изменение размера второго вектора также не работает.
Посмотрите на следующий пример:
std::vector<std::shared_ptr<Environment>> listEnvironmentStatic;
std::vector<std::shared_ptr<Environment>> listEnvironment;
Теперь давайте говорить у меня есть несколько элементов в listEnvironmentStatic, что я хочу скопировать на listEnvironment (который всегда содержит, по меньшей мере, 1 объект), как бы я уникальная копия и все еще сохраняйте listEnvironmentStatic в случае, если игрок снова хочет перезагрузить карту?
Я не думаю, что вы должны использовать 'shared_ptr' в контейнерах, таких как' vectors'. См. Например, [Использует std :: vector> антипаттерн?] (Http://stackoverflow.com/q/24085931) и [shared_ptr с вектором] (http://stackoverflow.com/д/10790161). –
jww
Вы хотите добавить в 'listEnviroment' или заменить все в нем? – thelink2012
И если list2 всегда содержит один объект, почему это вектор? –