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