C での反復中にマップから項目を削除する
マップを反復処理し、特定の条件に基づいて項目を削除しようとすると、次のようになります。反復子に対する要素の消去の影響を考慮することが重要です。マップの反復中に要素を消去すると反復子が無効になり、反復プロセスの続行が困難になります。
連想コンテナの標準消去イディオム
の標準イディオム反復中に連想コンテナ (マップなど) から消去する場合は次のようになります。
for (auto it = m.cbegin(); it != m.cend() /* not hoisted */; /* no increment */) { if (must_delete) { m.erase(it++); // or "it = m.erase(it)" since C++11 } else { ++it; } }
説明
このイディオムに従うことで、マップからアイテムを安全に削除できます。イテレータを無効にせずに繰り返します。
以上が反復中に C マップから項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。