增加/减少标准库集合的迭代器(例如std :: map)所需的时间是否有上限? (假设容器本身没有改变。)
答案 0 :(得分:3)
std::map
迭代器的递增操作保证摊销常量成本。也就是说, n 元素的完整遍历是O( n )。对于所有迭代器来说,这实际上是正确的(见24.2.1 / 8):
所有迭代器类别只需要那些在常量中可以为给定类别实现的函数 时间(摊销)。
答案 1 :(得分:1)
不,增加/减少迭代器所需的时间没有上限。该标准没有说明任何程序运行的时间。据我所知,所有受欢迎的编制者都对这个问题保持沉默。
然而,尽管如此,典型的实现并没有花费大量时间。没有内存分配或文件IO(我认为除了VM页面输入之外。)