maps
との両方hash_maps
がそう保持するように設計されていpairs
ます<key, data>
。マップに並べ替え(より正確にはツリー化)のためのキーが必要な理由は明らかですが、hash_mapsにキーが必要な理由がわかりません。データだけをハッシュして、ハッシュテーブルに配置できないのはなぜですか。
ドキュメントにもネットを検索しても、答えは見つかりませんでした。
std::unordered_set
あなたが説明する方法で正確に機能します。ただし、あるデータから別のデータにマップしたい場合があります。そこでstd::unordered_map
登場します。
食器棚まで歩きます。電話帳を取り出して番号を調べてください。名前と番号の間にマッピングがあります
キーがデータでもあるセットを探しています。
C ++は、それらのいくつかの異なるフレーバーを提供します:set、unordered_setなど。
ハッシュマップは、バケットまたはスロットのとしてもUnordered Map
使用されます。つまり、ハッシュテーブルには、正しい値を見つけることができるバケットまたはスロットの配列にを計算するためのハッシュ関数が必要です。最良の場合、O(1)時間でデータにアクセスするために使用されるハッシュテーブルのキー。HASH
KEY
index
index
index
データ自体をキーとして使用する場合、適切なコンテナはstd::set
またはstd::unordered_set
です。マップはキーと値の両方を保持します。std::map
との違いはstd::unordered_map
、データの編成方法にあります。std::map
キーで並べ替え、キーでstd::unordered_map
ハッシュします。