下午好,我想知道std::multimap::equal_range
的时间复杂度是多少?是Big-O(n)还是BIG-0(log n)。我记得读过std::multimap::erase
“的时间复杂度是对数加上被删除序列长度的线性时间。” < http://frank.mtsu.edu/~csjudy/STL/Multimap.html>
答案 0 :(得分:3)
C ++ 03标准,23.1.2中的表69(“关联容器要求”)表示equal_range
具有对数复杂度。
答案 1 :(得分:2)
equal_range
是一个O(log n)操作,返回lower_bound
和upper_bound
对。
这意味着它将返回一个迭代器范围,从第一个键开始,该第一个键大于或等于搜索键,并以大于搜索键的第一个键结束。
答案 2 :(得分:1)
我从来没有真正找到比SGI STL Programmer's Guide更好的信息来源。在这种情况下,您感兴趣的页面是Sorted Associative Container concept page,它在Complexity Guarantees部分中说明:
下限,上限和相等范围是对数。 [1]
...
[1]这是一个比Associative Container提供的更强有力的保证。关联容器中的保证仅适用于平均复杂度;最坏情况的复杂性允许更大。但是,Sorted Associative Container提供了最坏情况复杂性的上限。