C++:如何决定继续循环

C++: How to decide the loop to continue to?

本文关键字:决定 继续 循环 何决定 C++      更新时间:2023-10-16

我有嵌套的do-while,while和for循环。

有没有办法决定"继续"哪个循环?各种解决方案会很棒(不仅是转到..)谢谢!

while (foo==true) // loop1
{
   do
   {
      for(int i=0; i<someNumber ; i++) // loop3
      {
         if( soo==1)
         {
             <CONTINUE_TO_LOOP1>
         }
         else if( soo==2 )
         {
             <CONTINUE_TO_LOOP2>
         }
         else if( soo==3 )
         {
             <CONTINUE_TO_LOOP3>
         }
      }
   } while (moo==true) //loop2    
}

也许你可以做这个变通办法。

while (foo==true) // loop1
{
   do
   {
      for(int i=0; i<someNumber ; i++) // loop3
      {
         if( soo==1)
         {
              break;//<CONTINUE_TO_LOOP1>
         }
         else if( soo==2 )
         {
             break;//<CONTINUE_TO_LOOP2>
         }
         else if( soo==3 )
         {
            continue;//<CONTINUE_TO_LOOP3>
         }
      }
      if( soo==1)
      {
         break;//<CONTINUE_TO_LOOP1>
      }
      else if( soo==2 )
      {
          continue;//<CONTINUE_TO_LOOP2>
      }
   } while (moo==true) //loop2    
   if( soo==1)
   {
       continue;//<CONTINUE_TO_LOOP1>
   } 
}

经过一些重组,并且没有 goto:

bool loop3()
{
    for (int i=0; i < someNumber ; i++) {
        if(soo == 1) {
            return false;
        } else if(soo == 2) {
            return true;
        } else if(soo == 3) {
            continue;
        }
    }
    return true;
}

循环变为:

while (foo == true) // loop1
{
   do
   {
       if (loop3() == false) {
           break;
       }
   } while (moo == true) //loop2    
}

我提倡无条件的分支到表达标签。其他解决方案将花费额外的条件分支和可能的状态变量,将不太灵活,并且可读性可能要差得多。

CONTINUE_TO_LOOP3很简单:continue

CONTINUE_TO_LOOP2简单:break

CONTINUE_TO_LOOP1这是一个有趣的:

  • 如果不使用四个字母的单词goto,就无法一步到位
  • 或者在 loop2 周围放置一个尝试捕捉并使用加注器离开。
  • 或者假设 loop1 的末尾和 loop2 的末尾之间没有代码: moo = false ; break ;