【发布时间】:2010-11-23 21:34:11
【问题描述】:
C++0x 正在引入unordered_set,它可以在boost 和许多其他地方找到。我的理解是unordered_set 是具有O(1) 查找复杂性的哈希表。另一方面,set 只不过是一棵具有log(n) 查找复杂性的树。 为什么会有人使用set 而不是unordered_set?即不再需要set 了吗?
【问题讨论】:
-
你的问题基本上是在问是否还需要一棵树。
-
我想我在第一行已经清楚地说明了,这是一个愚蠢的问题。我错过了一些东西,现在我得到了答案:)
-
真正的原因是事情并不像看起来那样黑白。中间有很多灰色和其他颜色。您需要记住这些容器是工具。有时性能并不重要,便利性更有意义。如果人们都在寻找最有效的解决方案,我们一开始就不会使用 C++(更不用说 Python),而是不断地用机器语言编写和优化代码。
-
(到底为什么会有人使用通用名称来表示实现/接口的承诺超出了该名称所暗示的承诺,从而为没有承诺的人创造了尴尬的局面?)
标签: c++ algorithm data-structures c++11