【发布时间】:2017-02-20 02:24:46
【问题描述】:
如何在 C++ 中使用无序映射实现哈希映射。 如果 unordered map 中的键对应于哈希函数生成的索引, 当有多个值具有相同的键(冲突)时怎么办。那么我们如何使用相同的键访问这些值。
例如
unordered_map <int,string> hashTable;
hashTable.insert(pair<int,string>(3,"ab"))
hashTable.insert(pair<int,string>(3,"ba"))
现在如何访问“ba”?
【问题讨论】:
-
Unordered_map 实际上是一个哈希表。
-
你可能想用一个更好的例子,因为第二次插入会失败,因为它有相同的键。
-
这正是我怀疑的@amchacon,因为 unordered_map 中的键必须是唯一的,并且哈希键确实是 unordered_map 的键,那么如何处理任何冲突?跨度>
-
假设我想为 mod 7 存储数字。所以 6 和 13 有相同的 mod 我必须做 hash.insert(6,6) 和 hash.insert(6,13) .但是,如果我这样做,我如何平均访问 O(1) 中的 13(因为存在冲突)。所以,如果我执行 hash.insert(6,6) 和 hash.insert(13,6) 则不会虽然发生了碰撞,但这意味着我的无序地图将永远无法处理任何碰撞。
标签: c++ hash stl hashmap unordered-map