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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM