你如何在c ++中打破嵌套循环?

时间:2016-08-17 14:46:39

标签: c++ break

我是c ++的初学者,我想知道如何打破嵌套循环。有break(2)吗?

#include <iostream>

using namespace std;

int main() {
    for(int x = 5; x < 10; x++) {
        for(int j = 6; j < 9; j++) {
            for(int b = 7; b < 12; b++) {
                //some statements
                //is break(2) right or wrong
                //or can I use break; break;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:9)

您可以使用goto。它基本上是相同的功能

#include <iostream>

using namespace std;

int main() {
    for(int x = 5; x < 10; x++) {
        for(int j = 6; j < 9; j++) {
            for(int b = 7; b < 12; b++) {
                if (condition)
                    goto endOfLoop;
            }
        }
    }

    endOfLoop:
    // Do stuff here
}

答案 1 :(得分:4)

不,遗憾的是没有break(2)(或者幸运的是,取决于您对范围深度嵌套的看法)。

有两种主要方法可以解决这个问题:

  1. break之前设置一个标志,告诉外循环停止。
  2. 将一些嵌套循环放入函数中,以便它们可以breakreturn跳出来。例如:
  3. // returns true if should be called again, false if not
    bool foo() {
        for(int j = 6; j < 9; j++) {
            for(int b = 7; b < 12; b++) {
                if (something) {
                    break; // one level
                }
                if (whatever) {
                    return true; // two levels
                }
                if (another) {
                    return false; // three levels
                }
            }
        }
    }
    
    int main() {
        for(int x = 5; x < 10; x++) {
            if (!foo()) {
                break;
            }
        }
    }