指针作为多图中的键
Pointer as key in multimap
我可以有一个以 const char* 作为键的 boost::multimap 吗?或者任何其他指针都有密钥?
我觉得还好。但是当我这样做时,插入后我找不到我的价值观。但是当我将它们的键更改为 std::string 时,它工作正常。起初我不明白。
我想了想,这就是我认为的解释。
当我有一个 char* 作为键时,这意味着该值被映射到一些内存地址的值,如“0xccbbee”作为键(如键(0xccbbee)->值(1))。因此,要提取值,我 需要 发送“0xccbbee”以获得值 1,而我不会这样做。
我会尝试使用内存位置中的键(可能是 "HELLO")来获取值,然后尝试获取映射到 "HELLO" 的值,然后我不会得到任何东西。那是问题所在吗?
我的理解对吗。请让我知道我的理解是否正确。我正在努力学习。
TIA
-R
您对问题的解释是正确的。要获得预期的结果,请使用适当的 Comparator
:
配置 multimap
struct StrCompare
{
bool operator()(const char* lhs, const char* rhs) const
{
return strcmp(lhs, rhs) < 0;
}
};
typedef boost::multimap<const char*, whatever, StrCompare> StrToWhateverMultimap;
我可以有一个以 const char* 作为键的 boost::multimap 吗?或者任何其他指针都有密钥?
我觉得还好。但是当我这样做时,插入后我找不到我的价值观。但是当我将它们的键更改为 std::string 时,它工作正常。起初我不明白。
我想了想,这就是我认为的解释。
当我有一个 char* 作为键时,这意味着该值被映射到一些内存地址的值,如“0xccbbee”作为键(如键(0xccbbee)->值(1))。因此,要提取值,我 需要 发送“0xccbbee”以获得值 1,而我不会这样做。
我会尝试使用内存位置中的键(可能是 "HELLO")来获取值,然后尝试获取映射到 "HELLO" 的值,然后我不会得到任何东西。那是问题所在吗?
我的理解对吗。请让我知道我的理解是否正确。我正在努力学习。
TIA
-R
您对问题的解释是正确的。要获得预期的结果,请使用适当的 Comparator
:
multimap
struct StrCompare
{
bool operator()(const char* lhs, const char* rhs) const
{
return strcmp(lhs, rhs) < 0;
}
};
typedef boost::multimap<const char*, whatever, StrCompare> StrToWhateverMultimap;