指针作为multimap中的键



我可以有一个boost::multimap与const char*作为关键?或者其他有键的指针?

我认为它很好。但是当我这样做的时候,我找不到插入后的值。但是当我将它们的键改为std::string时,它工作得很好。一开始我不明白。

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

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

我会尝试通过使用内存位置(也许是"HELLO")的键来获取值,并尝试将值映射到"HELLO",我不会得到任何东西。这就是问题所在吗?

我的理解正确吗?请让我知道我的理解是否正确。我正在努力学习。

TIA

- r

你对问题的解释是正确的。要达到预期的结果,需要为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;

最新更新