遍历std ::映射,效果少于迭代器之间的比较
traverse the std::map with less than comparison between iterators
当我想在C 中穿越地图时,我们可能会使用以下技术:
for (auto i = m.begin(); i != m.end(); i++)
{ ... ... }
为什么我们不能使用以下内容:
for (auto i = m.begin(); i < m.end(); i++)
{ ... ... }
我的猜测是因为关联容器中的元素不是按顺序排列的顺序存储,例如顺序容器,是吗?
比较操作员<
需要随机访问迭代器。
map
仅提供双向迭代器。原因是,如果另一个迭代器在恒定时间之前或之后,您不能仅用这样的迭代器说(是的,它们不是一个在内存中的一个迭代器)。
作为!=
对于所有类型的迭代器都是有效的,请使用它代替<
版本。如果更改容器类型,则可以移植。
相关文章:
- 计算两个迭代器之间的距离时"Vector Iterators Incompatible"
- 对于C++随机访问迭代器(矢量迭代器),迭代器之间的差异是如何计算的?
- 如果我的容器位于两个现有值之间,那么伪造迭代器类别是否合理
- 迭代器和标量对象之间的未定义行为有什么区别吗?
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- const矢量和const迭代器之间的差异
- C STL,我想知道地图中的双向迭代器和操作员[]之间有什么不同
- 遍历std ::映射,效果少于迭代器之间的比较
- 如何获取两个迭代器之间的元素总数
- 一对迭代器之间的子序列的gtest/gmock匹配器
- 容器末端和指向内部项的迭代器之间的区别.C++
- MapValue 和迭代器 C++ 之间的比较
- C++:对迭代器之间计算距离的类型感到困惑
- 在两个迭代器之间获取“std::string”的子字符串
- 自定义迭代器和自定义常量迭代器之间的转换
- STL容器迭代器和C指针迭代器之间的区别是什么
- 如果没有for循环,我如何直接找到映射中指向两个不同键的任何两个迭代器之间的元素数量
- 两个迭代器之间有多少个元素
- 有效地计数两个std::multimap迭代器之间的条目数