减去地图迭代器
Subtracting map iterators
我有一个程序,其中我有两个 std::map
迭代器分别为 left
和 right
。我想在 [left,right].
我天真地做了这样的事情: int len = right - left
。我以为很好,但是它给了我一个错误
然后我发现了distance(left, right)
方法,要感谢堆栈溢出的帖子,但不幸的是它具有线性时间的复杂性。
是否可以为此获得O(1)
解决方案?
是否可以为此获得O(1(解决方案?
否。std::map
具有 biDirectionaliterator 。A 双向学位术语不支持随机访问,只能增加或减少。这意味着,如果您想向前移动5个位置,则必须致电++iterator_name
5次。如果您需要随机访问,则需要选择一个支持std::array
或std::vector
的容器。
您可以使用特定于编译器的policy based data structure
。可以在此codeforces上找到更多详细信息。
相关文章:
- 使用std::multimap迭代器创建std::list
- 如何使用迭代器初始化地图的键字段?
- 通过迭代器打印出地图的值
- C++同一地图上的嵌套迭代器?
- 减去地图迭代器
- 如何在地图迭代器中检测最后一个元素
- 为什么我的地图迭代器中存在语法错误
- 默认构造的地图迭代器以增量进入无限环路 - 绿色山丘编译器
- C STL,我想知道地图中的双向迭代器和操作员[]之间有什么不同
- C 地图 - 自引用迭代器
- 使用迭代器将值插入嵌套地图
- 如何使用迭代器更新地图的第二个值
- 在地图迭代器上不支持非仿制地图上的平等运算符(==)
- 地图和迭代器(IN)验证
- 包装地图迭代器的地图
- 地图和列表的迭代器显示不同的行为
- 如何在不使用迭代器的情况下在 C++ 中打印地图
- 通过迭代器浏览模板类中的地图
- 在多映射中,当两个迭代器持有具有映射到不同Value的相同键的值时.我们如何才能在地图上找到它们中的哪一个在另一个之前
- 地图 STL 的迭代器 C++它不起作用?