2015-10-15 80 views
-4
for (int j=1; j<path.size(); j++) { 
    //do something 
    for (int z=0; z<path.size(); z++) { 
     //do something 
    } 
    break; 
} 

內循環可從0循環,直到它擊中路徑大小的結束,但外環只是不斷給我j=1,而不是做這樣間循環增量確實。如何打破內部循環,但循環仍增加

兩個循環如何同時進行增量?我試圖刪除break;,但z循環通過path.size()的時間。

+0

我不明白你的問題,你想不想j和Z到在任何時候都有相同的值? – Hawkings

+0

j從1開始直到命中path.size(),z從0直到命中path.size(),所以j總是比z大1 – ckmss

+1

正確,但是你有一個... Nevermind。看看剛纔彈出的答案。 – user4581301

回答

2

嘗試與不break

for (int j=1; j<5; j++) { 
    printf("j=%d\n",j); 
    for (int z=0; z<5; z++) { 
     printf("z=%d\n",z); 
    } 
    break; // next time try to remove this break 
} 

運行這個測試程序,你可能會得到啓發。

如果你想j和Z到並行計算了,你可能希望這樣的事情

for (int j=1, z= 1; j<5; j++, z++) { 
    printf("j=%d\n",j); 
    printf("z=%d\n",z); 
} 
2

內環完全執行對外部循環的每次迭代,這就是爲什麼你看到z去循環path.size()次。在此之後,您的循環由於break而停止,因此它不會在外循環中第二次迭代。所以,即使外環的條件仍然是真的,它甚至不會檢查它,因爲你正在脫離你的循環。

1
for(int j = 1 ; j < path.size() ; j++){ 
    do something 
    for (int z = 0 ; z < j ; z++){ 
     do something 
    } 

我想這就是你要找的