【发布时间】:2014-05-05 03:28:28
【问题描述】:
这对我来说很奇怪,我以为它是一个哈希表。
我在以下答案中看到了 3 个原因(这可能是正确的,但我认为它们不是真正的原因)。 Hash tables v self-balancing search trees
虽然哈希可能不是一个简单的操作。我认为对于大多数类型来说它都非常简单。
当您使用 map 时,您会期望某些东西会为您提供分期 O(1) 的插入、删除、查找,而不是 log(n)。
我同意树在最坏情况下的性能更好。
我认为有一个更大的原因,但我无法弄清楚。 在 c# 中,例如 Dictionary 是一个哈希表。
【问题讨论】:
-
内存曾经非常昂贵。使用
std::unordered_map实现map的哈希表。 -
红黑树也有顺序。