C++ 嵌套for循环和重复迭代器
考虑以下嵌套for循环。我很难弄清楚为什么当内部for循环退出时,外部for循环尝试增加迭代器,而显然它不应该这样做。这将导致seg故障。如果外部for循环具有cbeg!=维克森德。显然,在内部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
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