【问题标题】:Run bool controlled loop once more再次运行布尔控制循环
【发布时间】:2018-11-03 14:07:51
【问题描述】:
bool loop;
do {
     ...
} while (loop);

loopfalse 之后,我需要再次运行此循环。 我不能使用整数计数器来制作像 while (loop && counter > required) 这样的东西,因为迭代次数会随着传入数据的变化而变化。

【问题讨论】:

    标签: c++ loops boolean


    【解决方案1】:
    bool loop;
    do {
        loop = process(...);
    } while (loop);
    loop = process(...);
    

    【讨论】:

      【解决方案2】:

      在您的循环条件变为真后开始计数。

      bool loop;
      int exit_counter = 0;
      do {
           // ...
      
           if (loop || exit_counter > 0)
               exit_counter++;
      } while (exit_counter < 2);
      

      不过,我更喜欢@martin.dowie 的方法。更清楚了。

      【讨论】:

      • 它确实避免了分支。
      【解决方案3】:
      bool loop;
      int n = 1;
      do {
           ...
      } while ((loop && n) || n--);
      

      【讨论】:

      • 哇,这太聪明了。
      • 这很聪明,但对于维护代码的人来说可能并不明显。
      【解决方案4】:

      这也行。

      bool loop=true;
      bool loop2=true;
      do {
          if(loop==false) loop2=false;
      
          ......loop=false;
      
      } while (loop || loop2);
      

      即使用“loop OR loop2”逻辑表达式。最初两者都是正确的。在“loop”变为假后,“loop2”仅在一次迭代中变为假。所以给你一个额外的迭代。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-06
        • 2021-11-24
        • 1970-01-01
        • 2016-07-02
        • 1970-01-01
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多