在c ++中std :: vector的ArrayList样式indexOf?

eri*_*oco 8 c++ element vector indexof

我从Java进入C++,并且有一个共同的设计情况,其中我有一个元素(非原始的)我想从std :: vector中删除.

在Java中,我写的是:arrayList.remove(arrayList.indexOf(myClassInstance));

在C++中,使用std :: vector,这样做的最佳/最佳/最干净的方法是什么?

我能想到的最好的事情是创建一个对我正在搜索的实例的引用,然后迭代向量直到找到该引用.实质上,比较向量中每个元素的内存地址与引用,直到我得到匹配.

我是在正确的轨道上吗?或者有更好的方法吗?(也许使用不同的std容器,到目前为止我只使用了std :: vector.)

fre*_*low 8

#include <algorithm>

std::vector<Foo>::iterator it = std::find(vec.begin(), vec.end(), foo_2b_found);
if (it != vec.end()) vec.erase(it);
Run Code Online (Sandbox Code Playgroud)