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

标签 c++

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

相关文章:

c++ - 围绕静态库的托管 C++ 包装器

c++ - char8_t 和 utf8everywhere : How to convert to const char* APIs without invoking undefined behaviour?

C++包含和重新定义类错误

c++ - Rcpp 数值 vector 输出只返回一个值

java - 如何初始化继承的值,并使用抽象方法c++?

c++ - &在这段代码中的作用是什么?

c++ - boost::container::vector 比 std::vector 快吗?为什么?

c++ - 声明 `const` `boost::range` s 的正确方法

c++ - 即使根据容量()仍有未使用的空间,std::vector 能否将其数据移动到 emplace_back()处的另一个地址?

c++ - 添加虚拟析构函数膨胀代码大小