在c ++中使用map时,如何在指定范围内使用for循环

0 c++

我想for在使用map时使用带迭代器的循环,并希望在不是从begin()end开始的指定范围内运行它end().我想将它用于从第3元素到第5元素的范围

Mat*_*jek 6

我想将它用于从第3元素到第5元素的范围

因为std::map's迭代器不是a RandomAccessIterator,而只是a BidirectionalIterator(你不能写.begin() + 3),你可以std::next用于此目的:

for (auto it = std::next(m.begin(), 2); it != std::next(m.begin(), 5); ++it)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

并记住 - 检查您的范围以确保您迭代有效范围.

  • 重要的是要注意,如果地图没有至少5个元素,这将导致未定义的行为.根据OP的情况,大小检查或`assert`语句可能是合适的. (3认同)