sawasaka さんが 有用なコメントを書いて下さっているので、よかったらコメント欄も読んでみてください。
逆順で回すのがポイントです。
auto children = getChildren();
// 逆順で回さないとindexがズレてしまい消したい要素を消せない
reverse(children.begin(), children.end());
for(auto child: children){
auto name = child->getName();
// _dirtyNamesには削除したい要素につけているnameが入っていることを想定
auto keys = _dirtyNames.keys();
// 以下のコードは keys.contains?(name) 的な意味
if( std::find(keys.begin(), keys.end(), name) == keys.end() ){
child->removeFromParent();
}
}
書いてから思ったんだけど、逆順で回さないと配列が壊れるって話前にもobjcでハマったことあるな・・