我可以使用带有const char *的boost :: multimap作为键吗?或者任何其他指针都有密钥?
我觉得很好。但是当我这样做时,我在插入后找不到我的值。但是当我改变它们键入std :: string时它工作正常。起初我不明白。
我想到了,这就是我认为的解释。
当我将char *作为键时,它意味着该值被映射到某些内存地址'像" 0xccbbee"作为键(如键(0xccbbee) - >值(1))。因此,要提取值需要发送" 0xccbbee"得到值1,我不会这样做。
我会尝试通过使用内存位置中的内容的键来获取值(也许是" HELLO")并尝试将值映射到" HELLO&# 34;我什么都得不到那是问题吗?
我的理解是否正确。如果我的理解是正确的,请告诉我。我正在努力学习。
TIA
-R
答案 0 :(得分:3)
您对问题的解释是正确的。要获得所需结果,请使用正确的multimap
:
Comparator
struct StrCompare
{
bool operator()(const char* lhs, const char* rhs) const
{
return strcmp(lhs, rhs) < 0;
}
};
typedef boost::multimap<const char*, whatever, StrCompare> StrToWhateverMultimap;