作者ric2k1 (Ric)
看板EE_DSnP
標題[討論] 生出來的 AdtTestObj 與 ref program 不一樣, 問題在那?
時間Thu May 14 22:42:08 2009
既然說 AdtTestObj 的 data 是由 random number 產生,
同學們做出來就很有可能與 ref program 不同.
不過, 其實通常是同學們的 code 裡面多宣告了一些不必要的 local AdtTestObj vars,
或是產生了一些不必要的 temporary AdtTestObj objs (如 copy 動作).
雖說也許無傷大雅, 而我們在測同學們的 code 的正確性時也會用 -value 來測,
但是還是建議同學們有空的話測一下 code 看看是怎麼回事...
不過問題是, 要怎麼知道是哪個地方的 code 多產生了 AdtTestObj 呢?
這要考驗同學們 debug 的應變能力...
有經驗的同學歡迎分享!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.46.125
1F:推 murasakimio:其實也可能是少一次耶@@ 05/17 12:16
2F:→ murasakimio:我是在_catacity從 0 變 1 時少一次 05/17 12:17
3F:→ murasakimio:因為直接用 _data = new T(x); 的關係 05/17 12:18
4F:→ murasakimio:如果呼叫兩次AdtTestObj()就跟ref program 一樣了 05/17 12:20
5F:→ murasakimio:抱歉是_capacity 05/17 12:28
6F:推 BBCallR:我也是用new T(x)而不是expand(1),結果就不一樣@@" 05/17 13:27
7F:推 goodword:我的情況是: 在某些特殊情況下會有不同,但其他都一樣 05/19 21:26
8F:→ goodword:如 我的: 394 127 553 633 606 783 05/19 21:27
9F:→ goodword:如 ref : 394 911 553 477 606 783 05/19 21:28
10F:→ goodword:所以並不是多一個 少一個的問題 而是選的temp obj不一樣 05/19 21:28
11F:→ goodword:所以後來我改了一下insert判斷的先後順序 結果就一樣了 05/19 21:29