我想使用std::multimap
其 Keys 和 Values 的类型GUID
。为此,我需要定义比较运算符。这是相关的问题。
struct GUIDPairsComparer
{
bool operator()(const GUID &left, const GUID &right) const
{
if (left.Data1 < right.Data1)
return true;
if (left.Data2 < right.Data2)
return true;
if (left.Data3 < right.Data3)
return true;
return false;
}
};
Class A{
private:
multimap<GUID, GUID, GUIDPairsComparer> myMap;
multimap<GUID, GUID, GUIDPairsComparer>::iterator it_myMap;
public:
FunctionUsingMultiMap(){...}
};
但是,我在使用myMap.count(GUID x)
and时遇到了困难myMap.find(GUID x)
。使用myMap.count(GUID x)
会产生异常,而当我使用我确定在 multimap 中myMap.find(GUID x)
的GUID
元素时,我将迭代器获取到 multimap 中的最后一个元素,这意味着在 multimap 中找不到给定元素。
无论如何,您是否知道为什么会发生这种情况?
不知何故,我认为它与我在结构中定义的比较运算符有关,之后我将其用于多图构建,但我不知道确切原因。这里还有一个GUID
类型的定义:
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
如您所见,我在比较函数中使用了Data1
,Data2
和Data3
,但没有使用Data4
char
数组,因为我看不到任何逻辑方法来比较GUID
.