如何创建不区分大小写的unordered_map<string, int>
?
覆盖key_equal
是否足够,或者我还需要更新hasher
?
答案 0 :(得分:2)
Hasher也需要更新,因为默认的哈希算法does not produce identical hash code for strings that differ only in the case of their symbols - 哈希代码函数的一个基本属性,旨在处理不区分大小写的字符串。
std::string s1 = "Hello";
std::string s2 = "hello";
std::hash<std::string> hash_fn;
size_t hash1 = hash_fn(s1);
size_t hash2 = hash_fn(s2);
std::cout << hash1 << '\n';
std::cout << hash2 << '\n';
这显示了ideone上的不同值:
101669370
3305111549