ekl*_*lmp 4 c++ erase libstdc++
代码:
for(x=abc.begin();x!=abc.end();x++)
{
if(-----)
{
----
abc.erase(x);
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:::
Dangerous iterator用法
擦除后迭代器无效,因此解除引用或将其与另一个迭代器进行比较无效.
在上面的代码中使用擦除功能的错误用法是什么?
从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;
}
}
Run Code Online (Sandbox Code Playgroud)
eraseSTL容器的模板函数返回下一个元素,或end().
编辑:感谢templatetypedef的评论.
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |