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());
說我有這樣的事情刪除載體類指針
vector<foo*> f;
現在假設我有這樣
void RemoveFromFoo(foo* fptr)
{
//search vector and remove if present
}
一個方法是這樣的工作?
f.erase(std::remove(f.begin(), f.end(), fptr), f.end());
是的。這是刪除刪除成語用於從contatiner中刪除選定的元素。
remove
會將您想要保留的所有元素(不等於fptr
)移動到序列的開頭,並將迭代器返回到它們之後的第一個元素(您想要擦除的第一個元素)。
然後erase
將從那裏擦除元素直到容器結束,只留下那些在你想保留的開始位置。