我是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;
}
}
}
}
答案 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)
(或者幸运的是,取决于您对范围深度嵌套的看法)。
有两种主要方法可以解决这个问题:
break
之前设置一个标志,告诉外循环停止。break
但return
跳出来。例如:// 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;
}
}
}