【发布时间】:2021-06-03 14:21:55
【问题描述】:
哈希表允许使用哈希函数将键映射到值。这里哈希函数实际上计算映射到特定值的键的索引。但我就是想不通为什么我们一开始就使用哈希表?为什么需要哈希表?地图/字典不够好?为什么不声明一个字典(Python 中的{'key1': 'value1'})并在需要哈希表的地方使用它?我读了很多关于它的东西,但仍然不明白。你能帮我理解一下吗?
【问题讨论】:
-
非常简短的回答 - 它是一组相似的键及其值。值可以是列表或计数或其他内容,具体取决于情况。如果你提到你不明白的地方,那么我们可以详细说明。
-
地图/字典是某种高级表示,它们使用低级数据结构来实现它(如哈希表、RB 树、AVL 树等)。
-
您不需要实现哈希表,除非您确实需要它。例如,C++ 映射、Python 字典是在很多地方维护键值的非常好的替代方案。但是,您可能需要实现自己的哈希表,例如,如果您需要设计一个针对 w.r.t 进行优化的低级数据结构。一些约束。地图/字典是某种 API,您无法通过任何控制来提高性能。
-
@biqarboy:在 C++ 中,
std::map不是哈希表。你会想要std::unordered_map。