指针作为multimap中的关键

时间:2016-10-19 06:37:15

标签: c++ boost hash multimap

我可以使用带有const char *的boost :: multimap作为键吗?或者任何其他指针都有密钥?

我觉得很好。但是当我这样做时,我在插入后找不到我的值。但是当我改变它们键入std :: string时它工作正常。起初我不明白。

我想到了,这就是我认为的解释。

当我将char *作为键时,它意味着该值被映射到某些内存地址'像" 0xccbbee"作为键(如键(0xccbbee) - >值(1))。因此,要提取值需要发送" 0xccbbee"得到值1,我不会这样做。

我会尝试通过使用内存位置中的内容的键来获取值(也许是" HELLO")并尝试将值映射到" HELLO&# 34;我什么都得不到那是问题吗?

我的理解是否正确。如果我的理解是正确的,请告诉我。我正在努力学习。

TIA

-R

1 个答案:

答案 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;