hash_mapとunordered_mapの違いは?
-
22-07-2019 - |
質問
最近、C ++でのハッシュマップの実装が unordered_map
と呼ばれることを発見しました。
なぜ hash_map
を使用していないのかを調べたところ、 horder_map
という hash_map
の実装に互換性の問題があることがわかったcode>が解決します(詳細についてはこちら)。
このwikiページではこれ以上の情報は得られないため、 unordered_map
が解決する hash_map
の問題を誰かが知っているのではないかと思います。
解決
C ++標準ライブラリにはハッシュテーブルが定義されていないため、標準ライブラリの異なる実装者は、 hash_map
という名前の非標準ハッシュテーブルを提供します。これらの実装は標準に従って書かれていないため、機能とパフォーマンスの保証に微妙な違いがありました。
C ++ 11 で始まるハッシュテーブルの実装が追加されましたC ++標準ライブラリ標準。クラスに別名を使用して、これらの非標準の実装との衝突を防ぎ、コードに hash_table
を持っている開発者が誤って新しいクラスを使用しないようにすることが決定されました。
選択された代替名は unordered_map
です。これは、クラスのマップインターフェイスとその要素の順序付けされていない性質を暗示しているため、実際によりわかりやすいです。
所属していません StackOverflow