use*_*405 0 c++ performance vector
我正在寻找从矢量中删除多个项目的最有效方法?
基本上我将在向量中搜索一个标志并删除具有该标志的对象.
不过,我听说从向量会搞乱删除对象的迭代器,所以什么是最有效的方式来循环虽然矢量(含潜在的成千上万个对象),并删除那些有特定的标志?
我希望不必多次遍历向量.
如果有多个元素匹配您应该使用的标志std::remove_if():
vec.erase(std::remove_if(vec.begin(), v.end(), [](T const& e){ return e.flag(); }),
v.end());
Run Code Online (Sandbox Code Playgroud)
使用此方法最多移动每个向量元素一次.删除单个元素可能会移动每个元素O(n).
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |