g++ (海湾合作委员会) 4.7.2
我有以下 vector
vector<Observer> observers;
我将继续使用这个 vector :
observers.push_back(ob);
我将把大约 10 名观察员推到 vector 上。但是,我需要从 vector 中删除一个。但是,因为我不知道观察者在 vector 中的哪个位置。我如何获取它所在位置的索引,以便我可以使用该索引将其删除?
我需要获取索引以便我可以使用 erase 删除它
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);
}
关于c++ - 获取元素在 vector 中位置的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810988/