我可以有一个以 const char* 作为键的 boost::multimap 吗?或者任何其他指针有 key ?
我觉得还好。但是当我这样做时,插入后我找不到我的值。但是当我将它们的 key 更改为 std::string 时,它工作正常。我一开始不明白。
我想了想,这就是我认为的解释。
当我有一个 char* 作为键时,这意味着该值被映射到某些内存地址的值,例如“0xccbbee”作为键(例如 key(0xccbbee)->value(1))。因此,要提取该值,我需要发送“0xccbbee”以获得值1,但我不会这样做。
我会尝试使用内存位置中的键来获取值(也许是“HELLO”),并尝试将值映射到“HELLO”,但我不会得到任何东西。这是问题所在吗?
我的理解正确吗?请告诉我我的理解是否正确。我正在努力学习。
TIA
-R
最佳答案
您对问题的解释是正确的。要获得所需的结果,请使用适当的比较器
配置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;
关于c++ - 指针作为多重映射中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40123918/