作者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