从向量中删除类指针

Removing a class pointer from vectors

本文关键字:指针 删除 向量      更新时间:2023-10-16

假设我有这样的

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将从那里擦除元素,直到容器的末尾,只在开始处保留要保留的元素。