を反復しようとしてstd::list
いますが、問題があります。反復中に実行される操作によって、リストから要素が追加または削除される可能性があります。この場合、追加は問題になりませんが、削除すると、シーケンス内の現在または次のアイテムを含むリスト内のイテレータが無効になる可能性があります。
リストを変更する決定が行われるポイントは、反復ループから遠く離れています。デバッガーは、2 つの呼び出しスタックで 40 の関数呼び出しを示しています。そのため、削除に基づいてイテレータを変更することはできません。
私が考えることができる唯一のことは、最初にリストのコピーを作成し、それを繰り返し、各要素をテストしてマスターリストに残っていることを確認することです. これは、可能であれば避けたい O(n^2) 命題です。