如果 while 循环至少运行一次,执行代码的最有效方法是什么?

Bri*_*ang 1 c++ loops while-loop

我有一个 while 循环,如果 while 循环至少运行一次,我希望运行一些代码行。如果while循环没有运行,我想跳过这行代码。

while(condition) {
  doSomething();
}
doSomethingElse(); 
/* Only run doSomethingElse() if the while loop ran
at least once */
Run Code Online (Sandbox Code Playgroud)

我可以在运行之前将 bool 设置为 false,并在运行时将其设置为 true,但对我来说感觉有点混乱。此外,这个 while 循环在一个最多可以运行 10^6 次的函数中,并且它有时间限制,所以我希望它尽可能高效地运行。有没有办法做到这一点?

*注意:不要将此与无论如何都至少运行一次的 do-while 循环混淆。我想要一行代码,仅当 while 循环至少运行一次时才运行。

Vla*_*cow 5

看来你的意思

if ( condition )
{
    while(condition) {
       doSomething();
    }
    doSomethingElse(); 
}
Run Code Online (Sandbox Code Playgroud)

或者

if ( bool b = condition )
{
    while( b) {
       doSomething();
       b = condition;
    }
    doSomethingElse(); 
}
Run Code Online (Sandbox Code Playgroud)

或者

if ( condition )
{
    do {
       doSomething();
    } while ( condition );
    doSomethingElse(); 
}
Run Code Online (Sandbox Code Playgroud)

  • “do..while”解决方案是最佳选择,因为它不需要在第一次迭代时评估“condition”两次,就像其他提出的解决方案所做的那样。 (5认同)