循环遍历布尔值

时间:2012-12-26 12:50:29

标签: c++ coding-style

  

可能重复:
  How to write a `for` loop over bool values (false and true)

我希望两次执行相同的任务,bool flag为真,第一次为假。有没有一种优雅的方法(可能使用循环)?

我的想法是做类似以下的事情,但这太复杂了。

bool flag = true;
for(int i = 0; i < 2; ++i, flag = !flag)
{
    // ...
}

4 个答案:

答案 0 :(得分:5)

将它放在一个函数中,以flag为参数。调用该函数两次。

答案 1 :(得分:4)

既然你说你必须在Thomas的答案中将大量参数传递给函数,那么考虑一下lambda:

int param1;
bool param2;
...

auto doWork = [&](bool flag){ //<- capture all local variables by reference
    ... do work with params ...
};

doWork(true);
doWork(false);

通过这种方式,您可以封装您的工作代码,不必繁琐地传递任何参数,并且显然您已经两次调用代码。

答案 2 :(得分:2)

在函数中调用它的解决方案可能是最好的,但您也可以这样做:

for( int i = 0; i < 2; ++i ) {
    bool flag = i == 0;
    ...

答案 3 :(得分:2)

我想出了一个使用do-while-loop的好方法。

bool flag = false;
do
{
    // ...
    flag = !flag;
}
while(flag)

由于do-while-loop中的代码至少执行一次,我可以在最后切换标志并获得两次运行。