[英]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.