看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《blueice08 (藍色的冰)》之銘言: : ※ 引述《blueice08 (藍色的冰)》之銘言: : : 假設我定義兩個結構及一個map: : : typedef struct i_test { : : unsigned int ii1; : : unsigned int ii2; : : unsigned int ii3; : : }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^這個是你的 key 吧。 : 在網路上看到了這樣的討論串: : http://www.daniweb.com/forums/showthread.php?p=812327#post812327 : 其中七樓(#7)的回應中提到需要"讓(key1, key2)的組合是唯一"的, : 因此在下面作者lyle017有了這樣的回覆: : bool operator<(const keyInfo& A) const : { : return ((Key1<A.Key1) || (Key2<A.Key2)); : } : 而我將這樣的概念用在我key的struct中有5個變數的程式中, ^^^^^^^ 你的 key 裡才 3 個變數。 先講講你是怎樣把這樣的概念用在你 key 的 struct 中吧。 解決問題並不是選擇了一條路線一遇到錯誤就退回起點找別條, 這不是好習慣。 常常好不容易找對路敲對了門, 卻又跑回家走另一條摔進山谷的路。 其實我完全不能理解你捨棄這條路, 又根據什麼參考資料或資訊寫出後來的這行的原因: return !((Key1==A.Key1) && (Key2==A.Key2)) 是什麼誘因讓你決定放棄前一條路, 使你覺得用 ==、&&、! 會比前者更有希望? 另外我建議你把上面那個 operator< 的實作改寫成這樣來閱讀: if(Key1 < A.Key1) return true; if(Key2 < A.Key2) return true; return false; 因為我不曉得你清不清楚它那樣寫是利用 || 的 short-cut evaluation 特性。 改善程式碼的書籍一般也會建議你改寫成這樣, 即使那種 || 的用法早已是全世界都相當流行的慣例寫法。 -- Ling-hua Tseng (uranus@tinlans.org) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: http://www.tinlans.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.116.1 ※ 編輯: tinlans 來自: 118.160.116.1 (01/19 08:19)