#include <map>
using namespace std; struct struId
{
CString str;
int i;
BOOL operator < (const struId &testSI) const
{
return (0 > str.Compare(testSI.str) || i < testSI.i);
}
}; std::map<struId, CString> shit;
struId Fuck1 = {"Fuck", 1};
struId Fuck2 = {"Fuck", 2};
struId Fuck3 = {"shit", 1};
struId Fuck4 = {"shit", 2};
shit.insert(pair<struId, CString>(Fuck1, "Fuck1"));
shit.insert(pair<struId, CString>(Fuck2, "Fuck2"));
shit.insert(pair<struId, CString>(Fuck3, "Fuck3"));//这一步就错了!
shit.insert(pair<struId, CString>(Fuck4, "Fuck4"));
using namespace std; struct struId
{
CString str;
int i;
BOOL operator < (const struId &testSI) const
{
return (0 > str.Compare(testSI.str) || i < testSI.i);
}
}; std::map<struId, CString> shit;
struId Fuck1 = {"Fuck", 1};
struId Fuck2 = {"Fuck", 2};
struId Fuck3 = {"shit", 1};
struId Fuck4 = {"shit", 2};
shit.insert(pair<struId, CString>(Fuck1, "Fuck1"));
shit.insert(pair<struId, CString>(Fuck2, "Fuck2"));
shit.insert(pair<struId, CString>(Fuck3, "Fuck3"));//这一步就错了!
shit.insert(pair<struId, CString>(Fuck4, "Fuck4"));
....
两个条件只要成立一个就返回TRUE,这逻辑就有问题了,当a、b两个元素的str和i成员都不同时,就会造成a<b和b<a同时成立,自己想想吧。
if (0 < str.Compare(testSI.str)) return FALSE;
return i < testSI.i;
return (0 > str.Compare(testSI.str) || 0 == str.Compare(testSI.str) && i < testSI.i);