※ 引述《blueice08 (藍色的冰)》之銘言:
: 假設我定義兩個結構及一個map:
: typedef struct i_test {
: unsigned int ii1;
: unsigned int ii2;
: unsigned int ii3;
: };
: typedef struct v_test {
: unsigned int vv1;
: unsigned int vv2;
: };
: typedef map<i_test, v_test> testMap;
: 然後:
: i_test itest;
: v_test vtest;
: testMap ttMap;
: ttMap.insert(make_pair(itest, vtest)); //有發生錯誤。
在網路上看到了這樣的討論串:
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個變數的程式中,
跑出來的結果是有問題的,而採其中兩個變數做return也是有問題的~
所以似乎上面的程式也不是正確的解法?
我有嘗試將return改為:return !((Key1==A.Key1) && (Key2==A.Key2));
也無法達到兩個key的組合唯一的需求。
不曉得是我哪裡觀念有誤,煩請版友們解惑…
謝謝:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.14.84