跳出多重循环的方法及优劣

       在含有多重循环语句的程序中,有时候我们需要在内层循环中直接跳出循环体,而不仅仅是跳出内层循环。

       c++中最基本的三个能够跳出循环语句:break语句(跳出本层循环),continue语句(跳出本次循环),return语句(跳出本函数)

       以二层循环为例,好多人首先想到的是break,但是break只能跳出到外层循环中,如果在外层循环中直接再次使用break试图跳出,可能会导致外层循环中的语句不被执行就跳出等一些意想不到的结果。continue也是不行的,因为它跳过了本次循环,如果执行完操作后仍然满足循环控制条件,它会继续执行内层循环,否则退出到外层循环,同样不能达到目的。

       也会有人想到用return语句,但是return语句直接会结束函数,如果你想在循环结束后还进行其他操作,显然return语句是不能满足要求 。

       那么该如何从内层跳出循环体呢?

@1.合理使用goto语句(goto语句百度百科词条

  goto语句改变了程序的执行顺序,使用不当,通常会出现不可预知的错误。但是当要从多重循环中直接跳出时,准确使用goto语句不失为最便捷方法。

  有人甚至形象比喻说:“就像楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。” 

  

for(......)
  for(......)
    {
        ...
      if(...)  goto next;
    }
next:...
...



@2.设置标志位

       定义bool型变量,在内层循环中如果遇到要跳出循环体的情况,可以先令变量值为一个bool型数据,然后跳出内层循环。在外层循环中,进行判断,如果成功,则继续跳出。这样不会对外层循环中后面的语句造成影响,也能达到跳出循环体的目的。

bool flag;
for(......)
  {
     for(......)
      {
        ...
      if(...)  {flag=1;  break;}
      }
  if(flag==1)
     break;
     ......
  }
...


@3.嵌入函数

       第一种方法应用不当出错的概率是相当大的,这也是好多人不愿意用goto语句的原因。第二条语句如果遇到多重循环,得写多次,书写麻烦,同时也会造成可读性差的缺点。

       如果我们跳出后执行的操作简单,不妨用一个函数代替跳出循环体的意图。

for(......)
  {
     for(......)
      {
        ...
      if(...)  {func(...);   continue;}
      }
     ......
  }
...

           

             各种方法都有它的优劣,在不同的情况下使用不同的方法,做到安全简约即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值