c++ - 指针作为多重映射中的键

标签 c++ boost hash multimap

我可以有一个以 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/

相关文章:

c++ - Vector<double> C++ 的索引/最大值/最小值

php - 更改密码哈希类型的最有效方法(md5 到 sha1)

c++ - 函数指针和访问——为什么这段代码是合法的?

c++ - boost::fusion 的目的是什么?

c++ - 求一个boost::bind()的限制的例子

c++ - 使用 boost spirit 解析带有可选分隔符的字符串

python - 更改 ImageHash Python 库中的哈希大小

algorithm - 如何将 1 亿个字符串映射到 10 万个 int?

c++ - CMake 未使用 brew (macOS) 找到 boost_python 库

c++ - 将 SQLite 与 WinRT 结合使用