使用迭代器之间的比较来遍历std :: map

Ale*_*lex 4 c++ dictionary iterator traversal

当我想用C++遍历地图时,我们可以使用以下技术:

for (auto i = m.begin(); i != m.end(); i++)
{    ...    ... }
Run Code Online (Sandbox Code Playgroud)

为什么我们不能使用以下代码:

for (auto i = m.begin(); i < m.end(); i++)
{    ...    ... }
Run Code Online (Sandbox Code Playgroud)

我的猜测是因为关联容器中的元素不像顺序容器那样按顺序存储,是吗?

Mat*_*her 6

比较运算符<需要随机访问迭代器.

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

至于!=适用于所有类型的迭代器,用它来代替的<版本.如果您更改容器类型,它是可移植的.