std :: multimap :: equal_range的时间复杂度

时间:2011-05-12 18:23:38

标签: c++ stl complexity-theory

下午好,我想知道std::multimap::equal_range的时间复杂度是多少?是Big-O(n)还是BIG-0(log n)。我记得读过std::multimap::erase“的时间复杂度是对数加上被删除序列长度的线性时间。” < http://frank.mtsu.edu/~csjudy/STL/Multimap.html>

3 个答案:

答案 0 :(得分:3)

C ++ 03标准,23.1.2中的表69(“关联容器要求”)表示equal_range具有对数复杂度。

答案 1 :(得分:2)

equal_range是一个O(log n)操作,返回lower_boundupper_bound对。

这意味着它将返回一个迭代器范围,从第一个键开始,该第一个键大于或等于搜索键,并以大于搜索键的第一个键结束。

答案 2 :(得分:1)

我从来没有真正找到比SGI STL Programmer's Guide更好的信息来源。在这种情况下,您感兴趣的页面是Sorted Associative Container concept page,它在Complexity Guarantees部分中说明:

  

下限,上限和相等范围是对数。 [1]

     

...

     

[1]这是一个比Associative Container提供的更强有力的保证。关联容器中的保证仅适用于平均复杂度;最坏情况的复杂性允许更大。但是,Sorted Associative Container提供了最坏情况复杂性的上限。