c++ - 获取元素在 vector 中位置的索引

标签 c++ vector

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/

相关文章:

c++ - 将 Visual C++ Studio/Express 设置为严格的 ANSI 模式

c++ - 如何从基本类继承函数

html - 在Shiny中使用renderUI显示矢量

c++ - 在没有 std::merge 的情况下合并两个 STL 容器

c++ - C/C++ : Is it possible to configure the Eclipse project settings to accept void pointer without casting for all Linux distros

c++ - Visual Studio 2013 中的 "per file"自定义生成步骤在哪里?

c++ - 如何使用 istream_iterator 从 ifstream 读取带空格的字符串?

c++ - 使用 ifstream 处理制表符并将任意数量的值读入 vector

c++ - vector <X*>* 与 vector <X>*

c++将 vector 元素写入拆分文件