gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:05 25 4
gpt4 key购买 nike

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

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

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

for (auto cbeg = vec.cbegin(); cbeg != vec.cend(); cbeg++)
{
for (; cbeg != vec.cend(); cbeg++) {
}
}

我在这里错过了什么?

最佳答案

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

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

关于c++ - 嵌套 for 循环和重复迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52141341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com