是否可以使用 break
函数退出几个嵌套的 for
循环?
如果是这样,你会怎么做呢?您还可以控制 break
退出多少个循环?
原文由 Faken 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以使用 break
函数退出几个嵌套的 for
循环?
如果是这样,你会怎么做呢?您还可以控制 break
退出多少个循环?
原文由 Faken 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的建议是使用检查变量来打破所需的循环。结果代码可能不是那么令人愉快。
您可以使用预处理器在引擎盖下进行所需的破坏。这种方法可以隐藏丑陋的代码和额外的复杂性。
例如,我创建了我的自定义中断机制,如下所示:
想要的代码:
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
//do something
if (desiredCondition) {
breakToLevel = 0;
}
if (breakToLevel < 3) {
break;
}
}
if (breakToLevel < 2) {
break;
}
}
if (breakToLevel < 1) {
break;
}
}
定义的宏:
#define BREAK_TO(L) breakToLevel = (L);
#define CHECK_BREAK(L) if (breakToLevel < (L)) break;
结果:
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
//do something
if (desiredCondition) {
BREAK_TO(0)
}
CHECK_BREAK(3)
}
CHECK_BREAK(2)
}
CHECK_BREAK(1)
}
原文由 S.M.Mousavi 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
AFAIK,C++ 不支持命名循环,就像 Java 和其他语言一样。您可以使用 goto,或创建您使用的标志值。在每个循环结束时检查标志值。如果它设置为 true,那么您可以中断该迭代。