std::multimap
Keys と Values が type のものを使用したい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)
ありmyMap.find(GUID x)
ます。を使用myMap.count(GUID x)
すると例外が発生しますが、マルチマップにあることがわかっている要素を使用するmyMap.find(GUID x)
とGUID
、マルチマップの最後の要素へのイテレータが取得されます。つまり、指定された要素がマルチマップに見つかりません。
どういうわけか、なぜこれが起こっているのか手がかりはありますか?
どういうわけか、後でマルチマップの構築に使用する構造で定義した比較演算子に関連していると思いますが、正確な理由はわかりません。GUID
また、タイプの定義は次のとおりです。
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
ご覧のとおり、比較関数で と を使用しましたが、 のその部分を比較する論理的な方法が見当たらないため、配列は使用Data1
しData2
ませんでした。Data3
Data4
char
GUID