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

Why std::map has got bidirectional iterator type?

我现在正在研究不同类型的迭代器。我读到 std::mapbidirectional 个迭代器。而std::setstd::list也有这种迭代器。为什么它们不是 random access 迭代器?谁能给我解释一下?谢谢!

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

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