2014-10-28 70 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將從那裏擦除元素直到容器結束,只留下那些在你想保留的開始位置。