不区分大小写的unordered_map <string,int>

MBZ*_*MBZ 8 c++ string stl unordered-map std

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

das*_*ght 3

Hasher 也需要更新,因为默认的哈希算法不会为仅符号大小写不同的字符串生成相同的哈希代码- 这是哈希代码函数的基本属性,旨在处理不区分大小写的字符串。

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';
Run Code Online (Sandbox Code Playgroud)

这在 ideone 上显示了不同的值:

101669370
3305111549
Run Code Online (Sandbox Code Playgroud)