我有一个嵌套循环,在内部循环中,我正在进行条件检查,如果满足条件检查,我想跳到外部循环的下一个迭代。
类似这样
for( int i = 0 ; i < n ; i++ ){
for( int j = 0 ; j < n ; j++ ){
if( condition ){
// Move to next iteration of first or external loop
// skip the work and work2 both
}
// some work being done
work();
}
work2();
}
我的意思是,如果条件满足 i = 2
和 j = 5
我想移到 i = 3
是否可以使用不类似于break语句的布尔值来做任何事情?
答案 0 :(得分:2)
除了注释中指出的要强制使用j
的值之外,还可以使用lambda并将其内联调用。有点难看,但是能完成工作:
for( int i = 0 ; i < n ; i++ ){
[&]() // OR [=]() OR [i, n]() depending on your usage
{
for( int j = 0 ; j < n ; j++ ){
if( condition ){
return;
}
// some work being done
work();
}
}();
}
答案 1 :(得分:0)
您可以将condition
部分放入内部for循环迭代检查部分。
如下:
for( int i = 0 ; i < n ; i++ )
{
for( int j = 0 ; (j < n) && conditionCheckFunction() ; j++ )
{
work();
}
}
答案 2 :(得分:0)
如果您的条件得到满足,则只需break
即可进入内循环。然后控制流将转到外循环的下一个迭代:
for(int i = 0 ; i < n ; i++) {
for(int j = 0 ; j < n ; j++) {
if( condition ) {
break; // out of inner loop
}
work();
}
}