2012-12-26 42 views

回答

2

我想通了,使用DO-while循環的好方法。

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

因爲在一個do-while循環的代碼至少執行一次,我可以切換在最後的標誌,並得到完全兩分。

5

把它放在一個函數中,以flag作爲參數。調用兩次函數。

+0

簡單而優雅。 –

+0

絕對是正確的方法! (當然是通過標誌作爲參數! –

+1

最簡單的解決方案是最好的。在我的情況下,我將不得不通過許多變量參數,所以我試圖避免一個函數,但如果沒有更好的解決方案,我會接受你的答案。 – danijar

2

調用它在功能的解決方案可能是最好的,但你也可以這樣做:

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

既然你說你有很多的參數傳遞給托馬斯的回答的功能,考慮拉姆達:

int param1; 
bool param2; 
... 

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

doWork(true); 
doWork(false); 

這樣,你有你的工作代碼封裝,不必單調乏味地傳遞任何參數,並且仍然很明顯,你正在調用兩次代碼。