リストの要素を消去する方法と、その消去が有効な反復子を返す方法を知っています。私の問題は、1 つの要素だけでなく複数の要素を削除したいということです。
実際、私のコードは次のようなものです
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
は機能しません。イテレータを変更する方法はわかりませんが、この反復ステップにとどまります。
読んでくれてありがとう。誰かが答えを知っていることを願っています。