可能重複:
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)
{
// ...
}
可能重複:
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)
{
// ...
}
我想通了,使用DO-while循環的好方法。
bool flag = false;
do
{
// ...
flag = !flag;
}
while(flag)
因爲在一個do-while循環的代碼至少執行一次,我可以切換在最後的標誌,並得到完全兩分。
把它放在一個函數中,以flag
作爲參數。調用兩次函數。
調用它在功能的解決方案可能是最好的,但你也可以這樣做:
for(int i = 0; i < 2; ++i) {
bool flag = i == 0;
...
既然你說你有很多的參數傳遞給托馬斯的回答的功能,考慮拉姆達:
int param1;
bool param2;
...
auto doWork = [&](bool flag){ //<- capture all local variables by reference
... do work with params ...
};
doWork(true);
doWork(false);
這樣,你有你的工作代碼封裝,不必單調乏味地傳遞任何參數,並且仍然很明顯,你正在調用兩次代碼。
簡單而優雅。 –
絕對是正確的方法! (當然是通過標誌作爲參數! –
最簡單的解決方案是最好的。在我的情況下,我將不得不通過許多變量參數,所以我試圖避免一個函數,但如果沒有更好的解決方案,我會接受你的答案。 – danijar