std::hashstd::basic_string - cppreference.com (original) (raw)
| Defined in header | ||
|---|---|---|
| template< class A > struct hash<std::basic_string<char, std::char_traits<char>, A>>; | (1) | (since C++11) |
| template< class A > struct hash<std::basic_string<char16_t, std::char_traits<char16_t>, A>>; | (2) | (since C++11) |
| template< class A > struct hash<std::basic_string<char32_t, std::char_traits<char32_t>, A>>; | (3) | (since C++11) |
| template< class A > struct hash<std::basic_string<wchar_t, std::char_traits<wchar_t>, A>>; | (4) | (since C++11) |
| template< class A > struct hash<std::basic_string<char8_t, std::char_traits<char8_t>, A>>; | (5) | (since C++20) |
The template specializations of std::hash for the various string classes allow users to obtain hashes of strings.
| These hashes equal the hashes of corresponding std::basic_string_view classes: If S is one of these string types, SV is the corresponding string view type, and s is an object of type S, then std::hash<S>()(s) == std::hash<SV>()(SV(s)). | (since C++17) |
|---|
[edit] Example
The following code shows one possible output of a hash function used on a string:
Possible output:
3544599705012401047 3544599705012401047 3544599705012401047
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3705 | C++11 | hash support for std::basic_string with customized allocators was not enabled | enabled |