不区分大小写的unordered_map <string,int =“”> </string,>

时间:2013-08-04 00:56:27

标签: c++ string stl std unordered-map

如何创建不区分大小写的unordered_map<string, int>
覆盖key_equal是否足够,或者我还需要更新hasher

1 个答案:

答案 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