我有一个a存储值[0 1 2 3 5]和其他向量的向量removelist存储要删除的索引[0 1 2],以便[3 5]最后离开.当我实现以下代码时,它会意外删除项目,因为向量a将在此过程中更改顺序.我有什么方法可以实现我的目标吗?
for (int i = 0; i<removelist.size() ; i++)
a.erase(a.begin() + removelist[i]);
Run Code Online (Sandbox Code Playgroud)
颠倒删除值的顺序,即使用 的反向迭代器removelist。这当然依赖于removelist被排序。
也许像
std::sort(removelist.begin(), removelist.end()); // Make sure the container is sorted
for (auto &i = removelist.rbegin(); i != removelist.rend(); ++ i)
{
a.erase(a.begin() + *i);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |