我正在尝试将某些项目从一个 vector 复制到另一个包含 shared_ptr 对象的 vector 中。
我不想要引用,而是将该对象的唯一拷贝放入另一个 vector 中。 这样做的重点是用游戏对象填充 listEnvironmentStatic,当游戏 map 开始时,所有内容都被复制到 listEnvironment 进行模拟,当玩家想要重置 map 时,listEnvironment 再次从 listEnvironmentStatic 复制所有内容,每个对象都回到它的位置原始位置。
this->listEnvironment.insert(this->listEnvironment.end(), this->listEnvironmentStatic.begin(), this->listEnvironmentStatic.end());
使用 std::copy 和调整第二个 vector 的大小也不起作用。
看下面的例子:
std::vector<std::shared_ptr<Environment>> listEnvironmentStatic;
std::vector<std::shared_ptr<Environment>> listEnvironment;
现在假设我在 listEnvironmentStatic 中有几个项目我想复制到 listEnvironment(它总是包含至少 1 个对象),我将如何进行唯一复制并仍然保留 listEnvironmentStatic 以防玩家想要重新启动又是 map ?
最佳答案
如果您想要从原始 vector 复制的新实例,您可以使用:
for ( const auto& e : listEnvironmentStatic )
listEnvironment.push_back( std::make_shared<Environment>( *e ) );
关于c++ - 将项目从一个 vector 复制到另一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156670/