我想用迭代器遍历 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/