如何制作地图<CLSID,string>?

1 stl map

我想创建一个容器,它可以将CLSID结构与其他东西相关联(例如,一个字符串); 例如,std :: map.

(CLSID表示标准的Windows CLSID结构)

但是,当我想使用它的find()和insert(object [clsid] = string)时,STL只是失败并给出了错误.

有谁知道如何解决这个问题?

例如:

typedef std::map<CLSID, std::string> MyCLSIDMap;
MyCLSIDMap mymap;
CLSID sample = CLSID_NULL;

mymap[sample] = string("test");   // compilation failed here
Run Code Online (Sandbox Code Playgroud)

Sim*_*han 5

正如Alex回答的那样,std :: map需要将它的键与op <进行比较.

bool operator<(CLSID const& l, CLSID const& r)
{
    return memcmp(&l, &r, sizeof(CLSID)) < 0;
}
Run Code Online (Sandbox Code Playgroud)