gpt4 book ai didi

c++ - 将项目从一个 vector 复制到另一个 vector

转载 作者:行者123 更新时间:2023-11-30 03:53:17 27 4
gpt4 key购买 nike

我正在尝试将某些项目从一个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com