gpt4 book ai didi

c++ - 为什么 std::map 是红黑树而不是哈希表?

转载 作者:IT老高 更新时间:2023-10-28 21:35:51 29 4
gpt4 key购买 nike

这对我来说很奇怪,我以为它是一个哈希表。

我在以下答案中看到了 3 个原因(这可能是正确的,但我认为它们不是真正的原因)。 Hash tables v self-balancing search trees

  1. 虽然哈希可能不是一个简单的操作。我认为对于大多数类型来说它都非常简单。

  2. 当您使用 map 时,您期望某些东西会给您带来分期 O(1) 插入、删除、查找,而不是 log(n)。

  3. 我同意树在最坏情况下的性能更好。

我认为有一个更大的原因,但我无法弄清楚。在 c# 中,例如 Dictionary 是一个哈希表。

最佳答案

这在很大程度上是一个历史事故。标准容器(连同迭代器和算法)是标准特性集被卡住之前的最后添加之一。碰巧的是,他们当时没有他们认为的基于哈希的 map 的充分定义,并且在卡住特征之前没有时间添加它,因此原始规范仅包含基于树的 map .

C++ 11 添加了 std::unordered_map(以及 std::unordered_setmulti 两个版本),它基于虽然散列。

关于c++ - 为什么 std::map 是红黑树而不是哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665902/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com