【发布时间】:2013-08-18 08:36:07
【问题描述】:
我知道如何擦除列表的元素,并且擦除返回一个有效的迭代器。我的问题是,我不仅要删除一个元素,还要删除多个元素。
其实我的代码是这样的
for(list<Treenode*>::iterator it=currentLevel->begin(); it!=currentLevel->end(); ++it){
if(something(*it)) {
for(list<Treenode*>::iterator it2=currentNewLevel->begin();it2!=currentNewLevel->end();){
if (somethingDifferent(*it2)) {
it2=currentLevel->erase(it2);
} else {
++it2;
}
}
}
}
这当然行不通,因为it 没有改变。我不知道如何更改迭代器,但请继续执行此迭代步骤。
感谢您的阅读。我希望有人知道答案。
【问题讨论】:
-
可能是我头脑简单:if(it2 == it) 在擦除后也调整一下