unordered_map
を実行するときに再ハッシュを実行できるかどうかについては、完全には明確ではありませんerase()
insert()
すべてのイテレータと参照を無効にする間に再ハッシュが発生する可能性があることは明らかです。
http://en.cppreference.com/w/cpp/container/unordered_map/insert
しかしerase()
、消去されたものを除いて、すべてのイテレータと参照を保持しているようです:
http://en.cppreference.com/w/cpp/container/unordered_map/erase
ただし、その最後のページと標準は、erase()
最悪の実行時間はであることを示していO(size)
ます。イテレータを無効にする方法でコンテナを変更せずに完了するまでに直線的な時間がかかる操作はどれですか?
この投稿は、消去中に反復子が無効になることを示唆しています: http://kera.name/articles/2011/06/iterator-invalidation-rules-c0x/
また、将来の提案で の再ハッシュが許可されることもどこかで読みましたerase()
。本当?
実際に再ハッシュが発生した場合、古い反復および消去アルゴリズムは間違っていますよね?