正如标题所说,我知道unbedered_map的cbegin()具有恒定的复杂性,但是是常量复杂度的迭代器的迭代。例如:cbegin()++; cbegin()+ 10; cbegin()+ i; CEND() - ; 这些都是o(1)???
答案 0 :(得分:1)
24.2.1 [iterator.requirements.general]
所有迭代器类别只需要那些函数 可以在固定时间内实现给定类别(摊销)。 因此,迭代器的需求表没有复杂性 列。
这的第一部分可能有点令人困惑,但它说的并非所有迭代器类型都支持所有操作(即,没有使用前向迭代器的随机访问);但是那些定义的函数总是have amortized constant complexity。该标准没有明确指定每个迭代器方法的复杂性;它似乎表明,在本节中,定义的那些迭代器方法必须具有分摊的常量复杂度。