我正在使用 std::hash_map<char*,T>
并以某种方式设法使其工作,但现在发现默认的比较功能 euqal_to<char*>
进行指针比较而不是字符串比较。我已经通过制作我自己的比较类型(使用 C 的 strcmp
并且它大约是 5 LOC)来解决这个问题,但是如果 STL 中还没有一个比较类型,我会感到有点震惊。
那么,有没有比较器可以做字符串比较呢?
最佳答案
嗯,std::strcmp
当你执行 #include <cstring>
时由 C++ 定义. SGI's hash_map doc 中的示例提供一个 strcmp
- 基于为 char* 制作自己的相等性测试函数的示例(引用自 SGI 文档的开头):
struct eqstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) == 0;
}
};
我不得不说我同意 link in your post 的作者,他说这已经是一个错误 hash_map<char*>
默认使用基于字符串的 hash<char*>
.但我通常在 C++ std::strings 上使用 hash_maps(或者最近使用 boost::unordered_maps)来处理这种事情。
关于c++ - 如何将 hash_map 与 char* 一起使用并进行字符串比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517483/