→ gcobc12632 :一樓帥哥11/04 22:52
推 maple0935 :二樓帥哥11/04 22:52
推 howar31 :二樓帥哥11/04 22:52
→ howar31 :..11/04 22:52
→ maple0935 :五樓吃屎 11/04 22:53
→ maple0935 :幹 可以不要當簽名檔嗎... 11/04 22:53
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.35.4
推 LPH66:這種輸出顯然有個 vectorX<T> 被輸出了 06/05 22:51
→ LPH66:那這就代表 v.sum() 得到了一個 vectorX<T> 06/05 22:51
→ LPH66:(我說的是 main.cpp 17 行的那個) 06/05 22:53
→ LPH66:可是你不覺得一個 vectorX<T> 的 sum 還回傳一個 vectorX<T> 06/05 22:53
→ LPH66:哪裡怪怪的嗎... 06/05 22:53
但我的回傳值是Type reg 阿ˊˋ
推 LPH66:那個...你再看看 Type reg; 這一行的附近 (汗) 06/05 22:56
→ o07608:看不出問題,囧 06/05 22:57
好像知道了,我把vectorX<Type> sum() 改成了Type sum()
→ LPH66:我覺得我寫暗示的功力有點退步了...vectorX.h 的 60 行 06/05 23:00
→ LPH66:啊, 你悟了 XD 06/05 23:01
:D 感謝~
然後現在開始修正計算方式,QAQ
※ 編輯: o07608 來自: 220.133.35.4 (06/05 23:02)
vectorX vi3(numeric_limits<int>::min() + 3, -10, 0, 6, 7,
numeric_limits<int>::max() - 3)
現在這個結果會變成6......為什麼-.-
→ purincess:推LPH~ (到處都要推(?) 06/05 23:10
原來是多寫了一次head++ -_-
※ 編輯: o07608 來自: 220.133.35.4 (06/05 23:23)
現在在做float test,碰到另一個問題:
vectrX vf1(1.73f, numeric_limits<float>::max() - 0.5f, 0.0f, -1.0f,
-numeric_limits<float>::max() + 0.5f)
在助教給的測資裡,應該是要印出:
1.73, 3.40282e+38, 0, -1, -3.40282e+38 這樣
可是我會印出:
1.73, 3.40282e+038, 0, -1, -3.40282e+038
請問這樣有差嗎._.
因為之後加起來的結果是錯的......
→ legnaleurc:STL container 用來繼承? 06/05 23:36
如果我沒搞錯你的意思的話,這的確是助教要我們實作的作法
→ azureblaze:STL container都沒做virutal dtor,所以繼承有點危險 06/05 23:48
不好意思,可以請你解釋的清楚一點嗎0.0?看不太懂
推 cuteclare:推LPH 神人 ~~~ 06/06 06:25
→ CaptainH:就是STL container沒辦法做到動態連結 06/06 10:18
→ CaptainH:可能無法正確的解構 06/06 10:18
那請問有辦法修改嗎0.0?
→ CaptainH:如果你100%保證Derived不會被轉型成Base那就可以避免.. 06/06 10:37
這邊我很不熟,囧a
→ CaptainH:看看書上的"動態多型"章節, 應該就懂了 06/06 10:40
→ CaptainH:既然是作業那就照做吧, 但要記得公開繼承STL容器是危險的 06/06 10:41
今天去問了助教後,把最後一個問題解決了:
float和double的numeric_limits<Type>::min(),印出來的並不是max的負值
而是一個接近0的數,原因和它的二進位表示法有關(有請高手詳細解釋)
因此要得到float和double負數的最小值,得用-numeric_limits<Type>::max()才行
※ 編輯: o07608 來自: 220.133.35.4 (06/06 19:14)
→ MOONRAKER:不會造成underflow的最小正值。(對,underflow) 06/06 21:33