精華區beta EE_DSnP 關於我們 聯絡資訊
剛剛測試 dlistTest1.cpp 用的是 STL 裡的 <list> 發現下面這段 code for (li = ll.begin(); li != ll.end(); ++li) if (*li % 3 == 0) li = ll.erase(li); 如果改成這樣 for (li = ll.begin(); li != ll.end(); ++li) { if (*li % 3 == 0) { cout << "erase " << *li << endl; li = ll.erase(li); } else cout << *li << endl; } 會輸出下面這一段 -40 -22 erase -6 20 erase 30 44 erase 48 erase 51 59 erase 66 86 erase 99 131 erase 150 -40 -22 8 20 38 44 50 erase 54 erase 75 erase 114 覺得怪怪的, 為什麼 delete 完 tail 後回傳的 iterator 再 ++ 會變回 head? 如果照 pdf 的寫法,我們 delete 完應該回傳那個 node 的下一個 node 所以 delete 掉 tail 是不是應該回傳 0? 那麼 0 再 ++ 應該會出問題才對 ><" 所以是我有那邊搞錯了嗎? 感謝指正 --- PS: 教授早點睡喔 ^^ -- . * . . .點點星空照上風~ . * . · -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.56 ※ 編輯: starsky7372 來自: 140.112.251.56 (12/05 02:31)
ric2k1:是很奇怪, 為什麼會 "erase 150"? 150 % 3 != 0 呀?? 12/05 09:20
ric2k1:我好像也會遇到這種情況, 我會進去 debug 看看... 12/05 09:22
ric2k1:Oh... 我錯了 150%3 = 0... 我在看看... (但要去開會了...) 12/05 09:23