从向量中删除对象

时间:2014-04-28 08:01:29

标签: c++ pointers object vector

我尝试过与this类似的东西,但它对我不起作用。这是代码:

void Player::remove_card_from_hand(Card* the_card){
    current_cards.erase(remove(current_cards.begin(), current_cards.end(), the_card), current_cards.end()); //Error occurs here at third argument "the_card"
}

其中vector<Card*>current_cards;定义了指向Card对象的指针向量。

然而,我收到错误:

  

C2660:'删除':函数不带3个参数

我意识到将the_card作为指向对象的指针,可能就是它所谓的。 有人能告诉我这段代码有什么问题,或者向我展示一种尝试从对象矢量中删除对象的不同方法。

修改

简单的问题,缺少#include <algorithm>。现在有效。

1 个答案:

答案 0 :(得分:1)

错误消息足够清楚。您正在调用一个没有三个参数的函数。您似乎在全局命名空间中定义了一个名为remove的函数并将其调用。

包含标题<algorithm>并使用限定名称进行算法std::remove

current_cards.erase( std::remove( current_cards.begin(), current_cards.end(), the_card ),
                     current_cards.end() ); 

此外,我不确定您是否正确执行任务。也许你的意思是以下

current_cards.erase( std::remove_if( current_cards.begin(), current_cards.end(), 
                     [&]( const Card * & c ) { return *c == *the_card ); } ),
                     current_cards.end() );