可能重复:
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)
{
// ...
}
答案 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中的代码至少执行一次,我可以在最后切换标志并获得两次运行。