C++ 不区分大小写的无序映射<;字符串,int>;

C++ 不区分大小写的无序映射<;字符串,int>;,c++,string,stl,std,unordered-map,C++,String,Stl,Std,Unordered Map,如何创建不区分大小写的无序映射? 覆盖key_equal就足够了,还是我还需要更新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::cou

如何创建不区分大小写的无序映射?

覆盖
key_equal
就足够了,还是我还需要更新
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';

您的答案大体上是正确的,但我们在这里讨论的是
std::hash
函数。因此,您的答案可能是错误的,这取决于
std::hash
如何处理字符串(我不知道)@MBZ将
字符串的
std::hash
更改为不考虑字符大小写是没有意义的:函数在CPU使用方面会更昂贵,并且会导致更多冲突,也可以。在散列之前,您可以将所有字符串都设置为小写them@aaronman这会破坏目的:OP不想在散列映射的外部执行它,他希望映射为他执行它。我的意思是你可以只编写一个包装器
101669370
3305111549