C++でのハッシュマップの実装がunordered_map
と呼ばれることを最近発見しました。
hash_map
を使用していない理由を調べたところ、hash_map
が解決するunordered_map
の実装に互換性の問題があることを発見しました(詳細については こちら) )。
そのwikiページはそれ以上の情報を提供しないので、誰かがhash_map
でunordered_map
が解決する問題のいくつかを知っていたかどうか疑問に思います。
C++標準ライブラリではハッシュテーブルが定義されていないため、標準ライブラリの異なる実装者は、しばしばhash_map
という名前の非標準ハッシュテーブルを提供します。これらの実装は標準に従って書かれていないため、すべての機能とパフォーマンスの保証に微妙な違いがありました。
C++ 11 以降、ハッシュテーブルの実装がC++標準ライブラリ標準に追加されました。これらの非標準の実装との衝突を防ぎ、コードにhash_table
が含まれる開発者による新しいクラスの不注意による使用を防ぐために、クラスに代替名を使用することが決定されました。
選択された代替名はunordered_map
です。これは、クラスのマップインターフェイスとその要素の順序付けされていない性質を示唆しているため、より説明的です。