我可以使用 break 退出多个嵌套的“for”循环吗?

新手上路,请多包涵

是否可以使用 break 函数退出几个嵌套的 for 循环?

如果是这样,你会怎么做呢?您还可以控制 break 退出多少个循环?

原文由 Faken 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 991
2 个回答

AFAIK,C++ 不支持命名循环,就像 Java 和其他语言一样。您可以使用 goto,或创建您使用的标志值。在每个循环结束时检查标志值。如果它设置为 true,那么您可以中断该迭代。

原文由 Cullen Walsh 发布,翻译遵循 CC BY-SA 2.5 许可协议

我的建议是使用检查变量来打破所需的循环。结果代码可能不是那么令人愉快。

您可以使用预处理器在引擎盖下进行所需的破坏。这种方法可以隐藏丑陋的代码和额外的复杂性。

例如,我创建了我的自定义中断机制,如下所示:

想要的代码:

 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题