簡體   English   中英

如何從 C++ 中的向量中擦除元素

[英]How to erase an element from a vector in C++

我正在嘗試使用如下erase方法擦除 C++ 中向量中的元素:

player_animals.erase(second_parameter); 

請注意, second_parameter是 integer eg 2

player_animals是定義如下的 Animal 指針向量: vector<Farm::Animal *> animals_;

我得到的關於擦除的錯誤是:

no instance of overloaded function "std::__1::vector<_Tp, _Allocator>::erase [with 
_Tp=Farm::Animal *, _Allocator=std::__1::allocator<Farm::Animal *>]" matches the argument 
list -- argument types are: (unsigned int) -- object type is: std::__1::vector<Farm::Animal 
*, std::__1::allocator<Farm::Animal *>>

我使用擦除方法的代碼如下:

 if (animal_to_be_sold->getType() == SellCommand::SELL_FARM_ANIMAL)
            {
                Farm::FarmAnimal* animal_to_be_sold = static_cast<FarmAnimal*> (animal_to_be_sold);
                player.putAnimalInSold(animal_to_be_sold);
                player_animals.erase(second_parameter); 
                player.addMoney(SellCommand::FARM_ANIMAL_PRICE);
            }

            else
            {
                player.addMoney(SellCommand::PET_PRICE);
                player_animals.erase(second_parameter); 

            }

我該如何解決這個問題,以便我可以使用擦除方法刪除向量中 position 的元素

我認為這會起作用,因為 std::vector::erase function 需要迭代器:

player_animals.erase(player_animals.begin() + second_parameter);

暫無
暫無

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

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