std::hash<std::basic_string>
cppreference.net에서
| 헤더 <string>
|
||
template< class A >
struct hash<std::basic_string<char, std::char_traits<char>, A>>;
|
에 정의됨(1) | (C++11부터) |
template< class A >
struct hash<std::basic_string<char16_t, std::char_traits<char16_t>, A>>;
|
(2) | (C++11부터) |
template< class A >
struct hash<std::basic_string<char32_t, std::char_traits<char32_t>, A>>;
|
(3) | (C++11부터) |
template< class A >
struct hash<std::basic_string<wchar_t, std::char_traits<wchar_t>, A>>;
|
(4) | (C++11부터) |
template< class A >
struct hash<std::basic_string<char8_t, std::char_traits<char8_t>, A>>;
|
(5) | (C++20부터) |
다양한 문자열 클래스에 대한 std::hash의 템플릿 특수화는 사용자가 문자열의 해시를 얻을 수 있도록 합니다.
|
이 해시들은 해당 std::basic_string_view 클래스들의 해시와 같습니다: 만약 |
(C++17부터) |
예제
다음 코드는 문자열에 사용된 해시 함수의 가능한 출력 결과를 보여줍니다:
이 코드 실행
#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'; }
가능한 출력:
3544599705012401047 3544599705012401047 3544599705012401047
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3705 | C++11 | 커스텀 할당자를 사용하는 std::basic_string 에 대한 해시 지원이 활성화되지 않음 | 활성화됨 |
참고 항목
|
(C++11)
|
해시 함수 객체
(클래스 템플릿) |
|
(C++17)
(C++17)
(C++20)
(C++17)
(C++17)
|
문자열 뷰에 대한 해시 지원
(클래스 템플릿 특수화) |