次のことを考慮してください。
for (it = list.begin(); it != list.end(); ++it) {
if (!(*it)->alive) {
it = list.erase(it);
}
}
これは、である限り正常に機能しlist.size() > 1
ます。リストに要素が1つだけ含まれると、segfaultを消去するための呼び出し。次の要素がないので想定しています。少なくとも、それは私が観察している行動です。これを処理する正しい方法はありますか?おそらくまったく異なるアプローチですか?
ご覧のとおり、リストをすぐにクリアしたくありません。要素が死んだときに削除したいのですが、これは最後の要素が削除されるまで正常に機能します。