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
将从那里擦除元素直到容器结束,只留下那些在你想保留的开始位置。