C++ 迭代器,在这个时候没失效? 不是删除了元素就会失效吗? 代码如下,这样删除迭代器有效,为什么

[复制链接]
查看11 | 回复2 | 2012-3-16 12:57:32 | 显示全部楼层 |阅读模式
失效不是说不能用了.比如说list里已经有了8,12,6,4,本来另外有一个迭代器p是指向6的,在你执行了你给出的代码后,原来没有自动加1的迭代器p现在指向了4,而不再是指向6,所以迭代器p是失效了的.移动或者删除元素后,会使被移动/删除元素的迭代器失效(你给出的代码迭代器 i 指向了下一个元素),也可能同时让其他迭代器失效(上面我举的例子)。望楼主采纳,谢谢...
回复

使用道具 举报

千问 | 2012-3-16 12:57:32 | 显示全部楼层
for (list::iterator i = c.begin(); i!= c.end();){
if ((*i)>10)
{
// 如果有一个值大于10,删除之
c.erase(i);
}
else
i++;}...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行