gpt4 book ai didi

c++ - cppcheck 错误 : Dangerous iterator usage

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:17 24 4
gpt4 key购买 nike

代码:

for(x=abc.begin();x!=abc.end();x++)  
{
if(-----)
{
----
abc.erase(x);
}
}

错误是:::
危险的迭代器用法
删除后迭代器无效,因此取消引用它或将它与另一个迭代器进行比较是无效的。

上面代码中使用erase函数的错误用法是什么?

最佳答案

删除abc对应的值后,itarator x无效。这应该修复它:

x = abc.begin();

while(x != abc.end())
{
if (-----)
{
----
x = abc.erase(x);
// skipped only to next item
}
else
{ // skip only to next item
++x;
}
}

STL容器的erase模板函数返回下一个元素,或者end()

编辑:感谢 templatetypedef 的评论。

关于c++ - cppcheck 错误 : Dangerous iterator usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295373/

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