c++中关于双循环跳出的小tips

场景:双层循环

for(){ 第一层
for() { 第二层

}

}

1. return放在第二层中:

return语句是循环每执行一次就自动返回值一次,但无法直接破坏双循环

2. break放在第二层:

break语句在以前我一直以为是写上之后就能够跳出所有循环,但是今天遇到了这样的例子:

for(i=0;i<nums.size()-1;i++)
            for(j=nums.size()-1;j>i;j--)
            {
                if((nums[i]+nums[j])==target)
                    break}

在这个代码块中,我发现返回的i和j值不是自己想要的,经过学习了解到break语句只能跳出距离自己最近的循环,所以像上面的代码只能跳出第二层,无法跳出第一层。

3.跳出双循环的解决办法:

其实完全可以进行以下判断,内外两层都使用if判断语句来break,这样就可以跳出双循环,如下:

for(i=0;i<nums.size()-1;i++){
             for(j=nums.size()-1;j>i;j--)
            {
                if((nums[i]+nums[j])==target)
                    break;
            }
            if((nums[i]+nums[j])==target&&i!=j)
                    break;
        }

通过合适的判断即可跳出循环。当然,也有同学给出将for双循环编写成一个独立方法的建议,然后用return直接跳出方法,也是可以实现打破双循环的效果。

你可能感兴趣的:(c++tips,c++)