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