簡體   English   中英

將項目從一個向量復制到另一向量

[英]Copy items from one vector to another vector

我正在嘗試將某些項目從一個向量復制到另一個包含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;

現在,假設我要復制到listEnvironment(始終包含至少一個對象)中的listEnvironmentStatic中有幾個項目,我將如何進行唯一復制,並且在玩家想要重新啟動地圖的情況下仍保留listEnvironmentStatic再次?

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM