我知道如何擦除列表的元素,并且擦除返回一个有效的迭代器。我的问题是,我不仅要删除一个元素,还要删除多个元素。
实际上我的代码就像
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
没有改变。我不知道如何更改迭代器,但请继续执行此迭代步骤。
感谢您的阅读。我希望有人知道答案。