c++ std::list 是一个双向链表,对它的遍历大部分都是使用list<T>::iterator it;大致的结构如下:
下面的简单代码是去除链表中小于1000的值,关键在于it =ListNumber->erase(it); 需要返回it,因为it是正在遍历的指针;删除后就无法继续遍历后面的队列了,会报错;
ListNumber->erase(it++);也可以;
list<int> ListNumber;
///.........
list<int>::iterator it;
int min = 0;
for (it = ListNumber->begin(); it != ListNumber->end(); )
{
min = (*it) - 1000;
if (min < 0 )
{
it =ListNumber->erase(it);
//ListNumber->erase(it); 错误
//ListNumber->erase(it++);正确
}else{
it++;
}
}
本文介绍C++中std::list双向链表的遍历与元素删除技巧,重点讲解如何在遍历过程中安全地移除满足条件的元素,避免迭代器失效导致的运行错误。
3187

被折叠的 条评论
为什么被折叠?



