作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] 請問bst的iterator
時間Mon May 19 12:49:44 2008
: 請問兩個問題:
:
: 1. begin()是回傳指到tree中最小的element
:
: 那如果一個iterator已經指到begin()了 再做li-- 會指到哪裡去呢?
:
這個你可以自己定義, 可以指到 NULL, 或者是停留在最小的 element.
: 2. 說明文件上說,end()是一個dummy iterator whose BSTreeNode=0,
:
: 意思是說,如果我的iterator只有一個data mamber: BSTreeNode<T>* _node 的話,
:
: 這個_node就是一個null pointer嗎?
可以這麼說, 不過因為我會記錄 trace, 所以 end() 也不是只是單純 return 0 而以.
:
: 那這個iterator跟tree中的max element有什麼關聯呢?
就是要 make sure:
iterator li = bst.end();
--li; ==> 會指到 max element.
:
: 現在我的bst的adtp正確,可是adtp -r就會出現"程式記憶體區段錯誤"的訊息
: 已經改成最新公佈的adtTest.h了
: 推測可能是iterator的部份沒有完全寫對...
:
開 debugger 看一下, 看 crash 在哪裡, 應該是某些你沒有考慮到的情況.
: --
:
※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.112.245.222
: ※ 編輯: danielbas 來自: 140.112.245.222 (05/19 10:39)
: → danielko:應該是iterator end()這裡有錯 因為我昨天也是同樣狀況 05/19 11:51
: → danielko:如果it已經指到begin() 應該不用假設會再--了吧 05/19 11:52
: → danielko:因為使用者不應該這樣用iterator...XD 05/19 11:52
雖然我們不一定會測到, 不過你應該不能假設使用者的使用習慣...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.21.241
1F:推 danielbas:把--end()改成指到max element後 問題就解決了 謝謝老師 05/19 13:10