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