嵌套for循环和重复迭代器

Now*_*Man 0 c++ c++11

考虑以下嵌套for循环.我无法弄清楚为什么当内部for循环退出时,外部for循环尝试增加迭代器,但显然它不应该这样做.这导致了seg故障.如果具有条件,为什么外部for循环将继续运行cbeg != vec.cend().显然,在内for循环中检查条件没有问题,并且它正确退出.

我不相信任何迭代器在这里被无效,唯一的操作是增量.

vector<int> vec{1,2,3,4};

for (auto cbeg = vec.cbegin(); cbeg != vec.cend(); cbeg++)
{
   for (; cbeg != vec.cend(); cbeg++) {
   }
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Hol*_*Cat 8

到达}递增迭代器,然后检查条件.

当内循环退出时,cbeg == vec.cend().然后cbeg由外循环再次递增,在检查外循环的条件之前导致未定义的行为.