【发布时间】:2014-06-10 09:57:59
【问题描述】:
我不明白为什么它不是线性的。
关于 multiset 的类似问题有一个很好的答案: why hastable's rehash complexity may be quadratic in worst case
但是集合呢?每个键可能只有一个元素。
更新:
一个桶中有很多键也不成问题。我们可以在线性时间内完成它们。
我认为下面提到的正确答案是标准中包含 O(n^2) 重新哈希复杂性以允许开放寻址(并且可能是其他一些)实现。
【问题讨论】:
-
重复线性加法 - 1 + 2 + ... n = n(n+1)/2
-
即使每个key只有一个元素,也可能有多个key的hash值相同,所以答案是一样的。
-
@Mankarse:你错了,看我的回答。好吧,你是对的,有多个具有相同哈希值的键。但是,这并不意味着
O(n²)重新散列行为。 -
链接的问题有一个很好的答案。哪个部分让你感到困惑?哪一部分不清楚?请为您的问题添加更多详细信息。
-
@gexicide:当然可以编写这样的容器,但标准并不要求实现这样做。最差情况的 rehash 性能是
O(n²)(参见[unord.req]/10表 103)。