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++;
}
}