zoukankan      html  css  js  c++  java
  • 【转】c++如何跳出多层循环

    我们知道c语言的break语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环 那可怎么办呢?

    比如一个二重循环  在最内层如果某条件成立 我们就可以完成需要的动作  然后退出全部循环,该怎么做呢?

    scrn20151004121955

    下面提供了几种跳出多重循环的方法 并不局限于上面的二重循环 例子只是为了提供思路

    1. 使用goto

    虽然大多数教材和人都建议少使用goto语句,但是goto还是有它存在的道理,比如可以快速跳出多重循环。雅乐网认为在这种情况下goto是最佳的选择。

    评分:★★★★★

    2. 写成函数 return

     1 void nestedfor(void)
     2 {
     3       for (condition1)
     4      {
     5           for (condition2)
     6           {
     7               for (condition3)
     8                {
     9                    if (condition)
    10                   {
    11                       symbol = 1;
    12                       return;
    13                    }
    14                 }
    15             }
    16       }
    17 }

    评分:★★★★

    缺点:循环嵌套很多的时候很麻烦,函数参数传递也很麻烦

    3. 直接修改外层循环条件

     1 for (i = 0; i < MAX1; i++)
     2 {
     3     for (j = 0; j < MAX2; j++)
     4     {
     5         if (condition1)
     6         {
     7             symbol = 1;
     8             i = INT_MAX;
     9             break;
    10         }
    11     }
    12 }

    评分:★★★★

    缺点:修改了循环控制变量

    4. 在外层循环设置判断条件

    内层循环判断满足条件修改标志后 外层循环进行判断

    评分:★★★

    缺点:书写较为麻烦  未满足条件的时候有多余的判断

    5. 在大循环后面判断标志加入break

     1 for (condition1)
     2 {
     3     for (condition2)
     4     {
     5         for (condition3)
     6         {
     7             if (condition)
     8             {
     9                 symbol = 1;
    10                 break11             }
    12         }
    13         if (symbol == 1)
    14             break;
    15     }
    16     if (symbol == 1)
    17         break;
    18 }

    评分:★★★

    缺点:同2

    版权声明:

    本文由  原创,商业转载请联系作者获得授权。 
    非商业转载请注明作者  或 雅乐网 ,并附带本文链接:
    http://www.yalewoo.com/how_to_skip_nested_loop.html

  • 相关阅读:
    webstorm打开项目找不到git
    Redis 下载与安装(Windows版)
    element-UI el-table样式(去边框和滚动条样式)
    MVVM
    HTTP
    TCP/IP
    vue双向绑定
    Vue组件化原理
    JavaScript
    css中可继承与不可继承属性
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/8622787.html
Copyright © 2011-2022 走看看