从向量中删除类指针

时间:2014-10-28 13:28:51

标签: c++

说我有类似的东西

vector<foo*> f;

现在假设我有一个像这样的方法

void RemoveFromFoo(foo* fptr)
{
   //search vector and remove if present
}

会像这样的工作吗?

f.erase(std::remove(f.begin(), f.end(), fptr ), f.end());

1 个答案:

答案 0 :(得分:3)

是。这是 erase-remove idiom ,用于从contatiner中删除所选元素。

remove会将您想要保留的所有元素(不等于fptr的元素)移动到序列的开头,并将迭代器返回到它们之后的第一个元素(第一个)要删除的元素。)

然后erase将从那里删除元素直到容器结束,只留下你想要保留的那些元素。