从向量中删除项目

用户1539405

我正在寻找从向量中删除多个项目的最有效方法?

基本上,我将在向量中搜索一个标记,并删除和具有该标记的对象。

但是,我听说从向量中删除对象会弄乱您的迭代器,那么循环遍历向量(可能包含数千个对象)并删除带有特定标志的对象的最有效方法是什么?

我希望不必多次遍历向量。

迪特玛·库尔(DietmarKühl)

如果有多个元素与标志匹配,则应使用std::remove_if()

vec.erase(std::remove_if(vec.begin(), v.end(), [](T const& e){ return e.flag(); }),
          v.end());

使用此方法最多可将每个向量元素移动一次。删除单个元素可能会使每个元素移动一次O(n)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章