【发布时间】:2013-05-08 06:13:47
【问题描述】:
为什么将 C++ 集合实现为二叉树而不是哈希集,与二叉树提供的 O(log n) 相比,它可以提供 O(1) 的平均案例复杂度?
【问题讨论】:
-
这个问题可能更好地表述为为什么除了从一开始的有序集之外 STL 没有 hashset/unordered_set?当然,那么这个问题可能会因为无法回答或争论不休而被关闭。我只知道 Stepanov 最初的 STL 提案没有
hash_set(我不确定 SGI 何时将它添加到他们的 STL 中,但我认为那是在 1998 年标准最终定稿之前)。 -
@MichaelBurr 您的评论比迄今为止给出的任何答案都更接近实际问题的答案。
-
因为与二叉树提供的 O(log n) 相比,哈希表还可以提供 O(n) 的最坏情况查找复杂度。
-
对我来说名字看起来很糟糕。
set应该是ordered_set,而unordered_set应该是set。排序不是集合所固有的。map也是如此。
标签: c++ algorithm data-structures stl