g++(GCC)4.7.2
我有以下 vector
vector<Observer> observers;
然后我将使用以下方法继续进行 vector 处理:
observers.push_back(ob);
我将把大约10个观察者推向该 vector 。但是,我需要从 vector 中删除一个。但是,因为我不知道观察者在 vector 中的哪个位置。如何获取所在位置的索引,以便可以使用索引将其删除?
我将需要获取索引,以便可以使用擦除将其删除
observers.erase(observers.begin() + index);
非常感谢您的任何建议,
最佳答案
您可以使用 find
算法之一(可能是find_if)。如果符合条件,它将迭代器返回到正确的元素,您可以直接将其提供给erase()
。
std::vector<Observer>::iterator toErase;
//Pick one of the following
toErase = std::find_if(observers.begin(), observers.end(),/*your predicate here*/);
toErase = std::find(observers.begin(), observers.end(), observerToDelete);
//If we found an observer matching the criteria
if(toErase != observers.end()){
observers.erase(toErase);
}