看板 C_and_CPP 關於我們 聯絡資訊
請教各位先進一個關於設計上的問題 目前我有一個架構大概如下: while (1) { if (condition) { //dosomething } else { break; } } 那這個架構裡面的condition是一個具有遞增(or 遞減)特質的判斷 e.g. int i = 1; while (1) { if (i++ < 200) { //dosomething } else { break; } } 如上範例,我的i是一個具有遞增性質的變數 藉此範例陳述一下我的需求 目前我if中要判斷的,是目前i的狀態,並在此if中讓他遞增到下一個狀態 也就是說,我不希望是以下個格式: while (1) { if (i < 200) { } else { break; } i++; } 接著是我實際上遇到的問題 我遇到的condition是一個link list,而非scalar variable 而我想達成我前面所描述的寫法 就是能在if中能夠判斷目前node,並且再指向下一個node 當然這個部份我也希望不要用到額外的變數,因為我前面的scalar variable也沒有用到 所以不知道各位先進有沒有好的解決方案? 謝謝 -- wq※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.91 ※ 編輯: godman362 來自: 140.123.105.91 (09/23 16:57)
LPH66:個人覺得 i++ 這種東西其實隱含了另一個額外變數 09/23 17:02
LPH66:所以要達成類似效果的話還是乖乖用個額外變數吧... 09/23 17:02
LPH66:不然即使你另外寫個 function 做類似的事還是需要額外變數 09/23 17:03
loveme00835:自己寫一個迭代器, 還有其實這樣寫並沒有比較帥, 用多 09/23 17:03
loveme00835:反而更難懂 09/23 17:04
godman362:所以至少還是要用額外的變數處理嗎... 09/23 17:08
godman362:這樣我明白了,謝謝兩位指點 09/23 17:08
james732:其實這沒什麼好節省的吧? XD 09/23 17:09
godman362:其實不是節省的問題,是我想要做的比較general一點 09/23 17:11
godman362:如果是要使用額外的變數處理的話,那我i++那邊也會改掉 09/23 17:12
holymars:幫link list寫一個function是「傳回現在的值,然後往下 09/23 17:20
holymars:移一個node」啊..或是你要直接overload operator++也行 09/23 17:21
holymars:當然你的link list就要多內建一個變數是你現在處理到哪 09/23 17:22
loveme00835:http://codepad.org/qjCrqoMR 09/23 17:49
youknowme09:其實書上都說不要在if內做額外動作..因為不易閱讀 09/24 16:01