我想知道在std :: multiset的迭代器上调用std :: advance是否在恒定时间内完成。
答案 0 :(得分:5)
否,只有随机访问迭代器才能在恒定时间内进行。否则,它是距离的线性时间。
答案 1 :(得分:4)
从std::advance
,我们看到
复杂度
线性。但是,如果InputIt额外满足RandomAccessIterator的要求,则复杂度是恒定的。
由于std::*map
和std::*set
系列中的任何模板均不满足RandomAccessIterator
的要求,因此它是线性的。来自here:
会员类型
[...]
iterator
常量BidirectionalIterator
const_iterator
常量BidirectionalIterator