unordered_map cbegin()+ number //常量复杂度?

时间:2017-12-25 16:01:41

标签: c++ dictionary iterator complexity-theory unordered

正如标题所说,我知道unbedered_map的cbegin()具有恒定的复杂性,但是是常量复杂度的迭代器的迭代。例如:cbegin()++; cbegin()+ 10; cbegin()+ i; CEND() - ; 这些都是o(1)???

1 个答案:

答案 0 :(得分:1)

  

24.2.1 [iterator.requirements.general]

     

所有迭代器类别只需要那些函数   可以在固定时间内实现给定类别(摊销)。   因此,迭代器的需求表没有复杂性   列。

这的第一部分可能有点令人困惑,但它说的并非所有迭代器类型都支持所有操作(即,没有使用前向迭代器的随机访问);但是那些定义的函数总是have amortized constant complexity。该标准没有明确指定每个迭代器方法的复杂性;它似乎表明,在本节中,定义的那些迭代器方法必须具有分摊的常量复杂度。