【发布时间】:2014-05-03 11:35:52
【问题描述】:
我混合了 C 和 C++ 文件,这些文件共同构成了我的程序。我正在使用我最初定义为的 boost 无序哈希映射:
typedef boost::unordered_map<char *, int> my_map;
但是,地图表现得很奇怪; find(key) 找不到哈希映射中实际存在的键。然后,我将定义更改为:
typedef boost::unordered_map<std::string, int> my_map;
现在哈希映射工作正常。尽管如此,为了使用地图,将我的 char * 转换为 std::string 对我来说是不方便的。有没有办法使第一个定义起作用?
【问题讨论】:
-
你有一个最小的例子吗?
-
默认比较器可能是
==。不适用于char*,如果您想比较字符串值,您将改为比较指针。 (也就是说,我还没有检查文档。) -
它不起作用的原因是因为查找的键是指针,而不是指向的字符串。使用 std::string 可以让相等运算符 (==) 处理字符串内容
-
如何更改默认比较运算符?