【转】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

 

版权声明:

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

posted @ 2018-03-22 12:15  皇家大鹏鹏  阅读(18908)  评论(0编辑  收藏  举报