将项目从一个向量复制到另一个向量

时间:2015-05-10 21:06:20

标签: c++

我试图将某个项目从一个向量复制到另一个包含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,以防玩家想要重启地图再一次?

1 个答案:

答案 0 :(得分:2)

如果您希望新实例是来自原始矢量的副本,您可以使用:

for ( const auto& e : listEnvironmentStatic )
    listEnvironment.push_back( std::make_shared<Environment>( *e ) );