If I use a break
statement, it will only break inner loop and I need to use some flag to break the outer loop. But if there are many nested loops, the code will not look good.
Is there any other way to break all of the loops? (Please don't use goto stmt
.)
for(int i = 0; i < 1000; i++) {
for(int j = 0; j < 1000; j++) {
if(condition) {
// both of the loops need to break and control will go to stmt2
}
}
}
stmt2
No, don't spoil the fun with a break
. This is the last remaining valid use of goto
;)
If not this then you could use flags to break out of deep nested loops.
Another approach to breaking out of a nested loop is to factor out both loops into a separate function, and return from that function when you want to exit.
Summarized - to break out of nested loops:
goto
Couldn't resist including xkcd here :)
Goto's are considered harmful but as many people in the comments suggest it need not be. If used judiciously it can be a great tool. Anything used in moderation is fun.