std:: hash <std::basic_string>
|
헤더에 정의됨
<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)
|
문자열 뷰에 대한 해시 지원
(클래스 템플릿 특수화) |