c++ - 当迭代器不是随机访问时,如何在映射结束之前停止迭代 "n"?

标签 c++ map iterator

我想用迭代器遍历 C++ 中的一个映射,但不是一直到最后。 问题是,即使我们可以用迭代器进行基本操作,我们也不能将迭代器与整数相加或比较。 如何编写以下说明? (final 是一个 map ;window,一个整数)

for (it=final.begin(); it!=final.end()-window; it++)

最佳答案

您不能直接从映射迭代器中减去,因为这是一项昂贵的操作(实际上执行 --iter 所需的次数)。如果你真的想这样做,你可以使用标准库函数'advance'。

map<...>::iterator end = final.end();
std::advance(end, -window);

这将使您的窗口结束。

关于c++ - 当迭代器不是随机访问时,如何在映射结束之前停止迭代 "n"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132272/

相关文章:

c++ - boost 、互斥概念

perl - Perl 中是否有诸如 zip 和 fold 之类的功能?

c++ - vector<string>::iterator - 如何找到元素的位置

c# - 通过 CLI 将 fstream(或等价物)从 C# 传递到 C++

c++ - 允许枚举类的基于范围的 For?

c++ - Windows/C++ : how to use a COM dll which is not registered

HTML5 Canvas 或 SVG 世界地图

java - 如何声明具有变量泛型的映射?

python - Python 3 中自定义类的迭代器

python - Python 迭代器是否正式需要 __iter__ 方法?