递增/递减标准库容器迭代器的迭代器是否确定?

时间:2012-11-14 16:12:53

标签: c++ iterator deterministic

增加/减少标准库集合的迭代器(例如std :: map)所需的时间是否有上限? (假设容器本身没有改变。)

2 个答案:

答案 0 :(得分:3)

std::map迭代器的递增操作保证摊销常量成本。也就是说, n 元素的完整遍历是O( n )。对于所有迭代器来说,这实际上是正确的(见24.2.1 / 8):

  

所有迭代器类别只需要那些在常量中可以为给定类别实现的函数   时间(摊销)。

答案 1 :(得分:1)

不,增加/减少迭代器所需的时间没有上限。该标准没有说明任何程序运行的时间。据我所知,所有受欢迎的编制者都对这个问题保持沉默。

然而,尽管如此,典型的实现并没有花费大量时间。没有内存分配或文件IO(我认为除了VM页面输入之外。)