作者uxijgil ()
看板EE_DSnP
標題[問題] 關於 adtp -r
時間Thu May 21 22:15:23 2009
手動測試發現在 adtp -r 會出現Bug
可是一直檢查不出哪個步驟出現問題
照順序Print都沒有問題
可以逆著順序Print都有問題
檢查過begin() . end()--的內容 都正確無誤
實在是不知道問題出在哪裡
附上測試結果:
adtTest.array:
adt> adta -r 5
adt> adtp
=== ADT (array) ===
[ 0] = 197 [ 1] = 477 [ 2] = 628 [ 3] = 783 [ 4] = 840
adt> adtp -r
=== ADT (array) ===
[ 4] = 783 [ 3] = 628 [ 2] = 477 [ 1] = 197 [ 0] = 41
adt> adta -r 5
adt> adtp
=== ADT (array) ===
[ 0] = 16 [ 1] = 137 [ 2] = 197 [ 3] = 242 [ 4] = 477
[ 5] = 526 [ 6] = 628 [ 7] = 783 [ 8] = 804 [ 9] = 840
adt> adtp -r
=== ADT (array) ===
[ 9] = 804 [ 8] = 783 [ 7] = 628 [ 6] = 526 [ 5] = 477
[ 4] = 242 [ 3] = 197 [ 2] = 137 [ 1] = 16 [ 0] = 73
adtTest.dlist:
adt> adta -r 10
adt> adtp
=== ADT (dlist) ===
[ 0] = 197 [ 1] = 277 [ 2] = 335 [ 3] = 394 [ 4] = 477
[ 5] = 553 [ 6] = 768 [ 7] = 783 [ 8] = 798 [ 9] = 911
adt> adtp -r
=== ADT (dlist) ===
[ 9] = 911 [ 8] = 798 [ 7] = 783 [ 6] = 768 [ 5] = 553
[ 4] = 477 [ 3] = 394 [ 2] = 335 [ 1] = 277
adt> adta -r 10
adt> adtp -r
=== ADT (dlist) ===
[ 19] = 952 [ 18] = 916 [ 17] = 911 [ 16] = 798 [ 15] = 783
[ 14] = 768 [ 13] = 717 [ 12] = 635 [ 11] = 628 [ 10] = 606
[ 9] = 553 [ 8] = 513 [ 7] = 477 [ 6] = 394 [ 5] = 364
[ 4] = 335 [ 3] = 277 [ 2] = 197 [ 1] = 141
adt> adtp
=== ADT (dlist) ===
[ 0] = 16 [ 1] = 141 [ 2] = 197 [ 3] = 277 [ 4] = 335
[ 5] = 364 [ 6] = 394 [ 7] = 477 [ 8] = 513 [ 9] = 553
[ 10] = 606 [ 11] = 628 [ 12] = 635 [ 13] = 717 [ 14] = 768
[ 15] = 783 [ 16] = 798 [ 17] = 911 [ 18] = 916 [ 19] = 952
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.18.123
1F:推 ric2k1:確定一下你的 end() 是 past the last 05/21 22:26
2F:→ uxijgil:我用cerr的方式 讓iter = end() 05/21 22:40
3F:→ uxijgil:然後讓iter--來確定 end()的前一個的確是最後一個有值元素 05/21 22:40
4F:推 ric2k1:cout << *(li--) 嗎? 這樣是錯的哦! 05/21 22:54
5F:→ firstquarter:跟我之前的bug一樣 我de出來是因為operator--寫錯 05/21 22:55
6F:→ firstquarter:兩個-- return的東西是不一樣的 我把他弄一樣了XD 05/21 22:56
7F:→ uxijgil:感謝 ! 問題正是因為 ++i 與 i++的不同所導致的 , 謝謝 05/22 00:57