对于容器,iterator 循环删除(erase)的结点,返回的是下一个结点,如果直接it++,会出错:
//如下写法是错误:
//如果erase了,就不能it++了
for (it = data_list.begin(); it != data_list.end();it++)
data_list.erase(it);//删除it后,再it++,会出错
//正确的使用如下:
//it erase完后,返回it++
list<int>::iterator it;for (it =data_list.begin(); it != data_list..end(); ) {
if (*it % 100 == 0)
data_list.erase(it++); //这里是关键 ,利用临时变量 ,也可以这样it=lt.erase(it)
else
++it;
}