为什么std :: map具有双向迭代器类型?

时间:2019-02-04 22:32:53

标签: std stdmap listiterator

我正在研究不同类型的迭代器。我读过std::map拥有bidirectional迭代器。并且std::setstd::list也拥有这种类型的迭代器。为什么它们不是random access迭代器?有人可以向我解释吗?谢谢!

1 个答案:

答案 0 :(得分:1)

标准C ++库提供了对容器类型的随机访问迭代器 为此,访问任意元素需要固定的时间,例如std::arraystd::vectorstd::deque。那是因为 random access容器之一 可以在恒定时间内访问任何元素。

std::list不是随机访问容器类型: 访问需要线性时间。 std::set都不是:访问 需要对数时间。同样std::map