私は、A *検索に使用された未使用のマップでメモリをクリーンアップしようとしています。下のコードは私のマップの1つです。私はそれを働かせることができません、私はいくつかの助けが必要です。ポインタをアンオーダード・マップで削除する
for (std::unordered_map<Tile*, PlannerNode*>::iterator itr = plan_map.begin(); itr != plan_map.end(); ++itr)
{
delete itr;
itr->second = nullptr;
}
これは、順序付けされていないマップの仕組みではありません。順序付けされていないマップのエントリを削除するには、その 'erase()'メソッドを使います。順序付けされていないマップ内の項目を消去すると、消去されたイテレーターは無効になり、ループ内で増分しようとするなど、操作は未定義の動作であり、保証されたクラッシュです。 C++の本を開き、マップや他のコンテナがどのように動作し、それを再読み込みするかを説明する章を開きます。 –
'nullptr'に設定したのと同じものを'削除 'したくありませんか? – Galik
iteratorそれは友人が私にそれをする方法を説明したものですが、それはうまくいかないようです。 –