Member functions | ||||
(C++23)
|
||||
Element access | ||||
(
DR*
)
|
||||
(
DR*
)
|
||||
Iterators | ||||
Capacity | ||||
(
DR*
)
|
||||
Modifiers | ||||
(C++23)
|
||||
(
DR*
)
|
||||
(C++23)
|
||||
(C++23)
|
||||
Search | ||||
Operations | ||||
(C++20)
|
||||
(C++20)
|
||||
(C++23)
|
||||
Constants | ||||
Non-member functions | ||||
(C++20)
(C++20)
|
||||
Comparison | ||||
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(C++20)
|
||||
Numeric conversions | ||||
(C++11)
(C++11)
(C++11)
|
||||
(C++11)
(C++11)
|
||||
(C++11)
(C++11)
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
Literals | ||||
(C++14)
|
||||
Helper classes | ||||
hash
<std::basic_string>
(C++11)
|
||||
Deduction guides (C++17) |
<string>
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)
The following code shows one possible output of a hash function used on a string:
#include <functional> #include <iostream> #include <memory_resource> #include <string> #include <string_view> using namespace std::literals; int main() auto sv = "Stand back! I've got jimmies!"sv; std::string s(sv); std::pmr::string pmrs(sv); // use default allocator std::cout << std::hash<std::string_view>{}(sv) << '\n'; std::cout << std::hash<std::string>{}(s) << '\n'; std::cout << std::hash<std::pmr::string>{}(pmrs) << '\n';Possible output:
3544599705012401047 3544599705012401047 3544599705012401047[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards. Applied to Behavior as published Correct behavior LWG 3705 C++11 hash support for std::basic_string with customized allocators was not enabled enabled
[edit] See also
hash function object(C++11)
(class template) [edit]hash support for string views(C++17)(C++17)(C++20)(C++17)(C++17)
(class template specialization) [edit]Toolbox