2014-10-28 81 views
1

说我有这样的事情删除载体类指针

vector<foo*> f; 

现在假设我有这样

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

一个方法是这样的工作?

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

回答

3

是的。这是删除删除成语用于从contatiner中删除选定的元素。

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

然后erase将从那里擦除元素直到容器结束,只留下那些在你想保留的开始位置。