gpt4 book ai didi

c++ - 如何使用删除函数按索引删除 std::vector<> 中的多个元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:29 25 4
gpt4 key购买 nike

我有一个 vector a 存储值 [0 1 2 3 5] 和其他 vector removelist 存储要删除的索引 [0 1 2] 以便在最后留下 [3 5]。当我执行以下代码时,它会意外删除项目,因为 vector a 将在此过程中更改顺序。我有什么方法可以实现我的目标吗?

 for (int i = 0; i<removelist.size() ; i++)     
a.erase(a.begin() + removelist[i]);

最佳答案

颠倒删除值的顺序,即使用 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);
}

关于c++ - 如何使用删除函数按索引删除 std::vector<> 中的多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com