遍历std ::映射,效果少于迭代器之间的比较

traverse the std::map with less than comparison between iterators

本文关键字:迭代器 之间 比较 std 映射 遍历      更新时间:2023-10-16

当我想在C 中穿越地图时,我们可能会使用以下技术:

for (auto i = m.begin(); i != m.end(); i++)
{    ...    ... }

为什么我们不能使用以下内容:

for (auto i = m.begin(); i < m.end(); i++)
{    ...    ... }

我的猜测是因为关联容器中的元素不是按顺序排列的顺序存储,例如顺序容器,是吗?

比较操作员<需要随机访问迭代器。

map仅提供双向迭代器。原因是,如果另一个迭代器在恒定时间之前或之后,您不能仅用这样的迭代器说(是的,它们不是一个在内存中的一个迭代器)。

作为!=对于所有类型的迭代器都是有效的,请使用它代替<版本。如果更改容器类型,则可以移植。