我试图将某个项目从一个向量复制到另一个包含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(它总是包含至少一个对象),我该如何进行唯一复制并保持listEnvironmentStatic,以防玩家想要重启地图再一次?
答案 0 :(得分:2)
如果您希望新实例是来自原始矢量的副本,您可以使用:
for ( const auto& e : listEnvironmentStatic )
listEnvironment.push_back( std::make_shared<Environment>( *e ) );