C++ 嵌套for循环和重复迭代器

C++ 嵌套for循环和重复迭代器,c++,c++11,C++,C++11,考虑以下嵌套for循环。我很难弄清楚为什么当内部for循环退出时,外部for循环尝试增加迭代器,而显然它不应该这样做。这将导致seg故障。如果外部for循环具有cbeg!=维克森德。显然,在内部for循环中检查了该条件,没有问题,并且它正确退出 我不相信这里有任何迭代器是无效的,唯一的操作是增量 vector<int> vec{1,2,3,4}; for (auto cbeg = vec.cbegin(); cbeg != vec.cend(); cbeg++) { for

考虑以下嵌套for循环。我很难弄清楚为什么当内部for循环退出时,外部for循环尝试增加迭代器,而显然它不应该这样做。这将导致seg故障。如果外部for循环具有cbeg!=维克森德。显然,在内部for循环中检查了该条件,没有问题,并且它正确退出

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

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

for (auto cbeg = vec.cbegin(); cbeg != vec.cend(); cbeg++)
{
   for (; cbeg != vec.cend(); cbeg++) {
   }
}
我错过了什么

Reaching}递增迭代器,然后检查条件


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

检查并查看等效while循环的外观。表达式cbeg++在循环体之后执行,在本例中,循环体将cbeg设置为vec.cend.Holy moly,真不敢相信我错过了如此基本的内容。经历了整整一个小时:X