看板 NTUGIEE_EDA 關於我們 聯絡資訊
※ [本文轉錄自 C_and_CPP 看板] 作者: renderer (rendering) 看板: C_and_CPP 標題: Re: [問題] map元素的刪除? 時間: Fri Jul 1 20:02:34 2005 ※ 引述《khoguan (Khoguan Phuann)》之銘言: : ※ 引述《renderer (rendering)》之銘言: : : 這麼說 即使是 int 的 i++ 也是先加再留下原值囉 ??? : 之前寫那樣一篇就期望人家理解,的確的是強人所難。 : 我只能先簡單說,並無規定先後,由編譯器自便,但是到達 : sequence point 時,該evaluate的值,該做的 side effect : 都得要已經完成。至於哪個地方要有 sequence point 則有 : 明確規定。 我寫了一小段 code 來測試這件事: #include <iostream> int globalI = 0; void fun(int paramI) { std::cout << globalI << std::endl; std::cout << paramI << std::endl; } int main(int argc, char *argv[]) { fun(globalI++); return 0; } 結果是 1 0 globalI++ 是先加了之後留原值給 fun 所以我多年來 i++ 是「先做完 statement 後加」的觀念是錯的 @@ 好像真的得用 sequence point 的觀念來理解才得體 所以 面對 aMap.erase(it++) 其實也不必有感情掙扎 感謝準版主的指點 另外 i++ + 1 i++ 之後有 sequence point 嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.216.130 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.195
moonshade:大像最近幹嘛一直轉這種東西? 203.203.83.73 07/01
crazying:說實話 是因為我很無聊...Orz 140.112.25.195 07/01
moonshade:............................. 203.203.83.73 07/01
moonshade:多看點文學作品修養身心吧... 203.203.83.73 07/01
crazying:增進大家 c++ 的小常識 140.112.25.195 07/01
yellowfishie:推文學作品 :) 140.112.25.218 07/01
moonshade:不要寫這個鬼東西就好了... (=_=||||) 203.203.83.73 07/02
moonshade:好好的整齊的coding style不用,去學一些 203.203.83.73 07/02
moonshade:偷吃步又難讀的方法... 203.203.83.73 07/02
gwliao:這個對run-time來說, 沒啥改變!140.112.230.224 07/02
gwliao:但被同伴"阿"的機率會暴增(or 馬上就抓起來"啊")140.112.230.224 07/02
gwliao:可以用VC應該不變,gcc會變快幾個clock cycle吧!140.112.230.224 07/02