作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [请益] 关於 adtTest.h 更改
时间Tue May 20 07:19:10 2008
※ 引述《spock ()》之铭言:
: 老师您好,想请问以下的更改是否在可以接受的范围内:
: adtTest.h 加入几处:
: #ifdef ADT_BST
: 传 &_container 给 iterator。
: #endif
: 这样是否可以?
: 因为我的设计在 iterator ++ 或 -- 的时候,用於搜寻的 method 需要知道
: _tail 与 _root 以判别一些条件。想了很久,想不到其他方法不用判断。
: 也因为这样的设计,有些 code 很丑,只是为了让传递变数的过程能让 compiler 接受。
: 如果可以,前面同学修改 adtTest.h 也可以用同样的办法。
: 不过老师可能要额外向同学说明为什麽有的地方要用 do {...} while (...) 来写。
: 另外,我的数字也因为有 _tail 而不一样,不知道助教批改起来会不会抓狂。
: 谢谢老师!
如前所述, 请不要更改 adtTest.h 以免大家测的东西不一样或是造成不公平的情形.
你说的需求可以这样解决:
1. 在 begin(), end() 里将 BSTree *this 传给要 return 的 iterator
2. 在 iterator constructor 里要求传入 BSTree * (但要有 default argument)
3. Overload iterator 的 = 把 BSTree * copy 过去
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.132.127
1F:推 itspeter:可以请问老师为什麽第二点要有default argument吗? 05/20 09:02
2F:→ ric2k1:iterator li = _container.begin(); 05/20 09:28
3F:→ ric2k1:除非多写一个 iterator() constructor, 否则 compile会不过 05/20 09:29
4F:推 spock:谢谢老师。後来发现我原本的写法就是这样,改 adtTest.h 是 05/20 22:51
5F:→ spock:多余的。老师最後一版的 adtTest.h 直接可以用。 05/20 22:52