Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::hash<std::basic_string>

      From cppreference.com
      <cpp‎ |string‎ |basic string
       
       
       
      std::basic_string
       
      Defined in header<string>
      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 ofstd::hash for the various string classes allow users to obtain hashes of strings.

      These hashes equal the hashes of correspondingstd::basic_string_view classes: IfS is one of these string types,SV is the corresponding string view type, ands is an object of typeS, thenstd::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:

      Run this code
      #include <functional>#include <iostream>#include <memory_resource>#include <string>#include <string_view>usingnamespace 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:

      354459970501240104735445997050124010473544599705012401047

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3705C++11hash support forstd::basic_string with customized allocators was not enabledenabled

      [edit]See also

      (C++11)
      hash function object
      (class template)[edit]
      hash support for string views
      (class template specialization)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/basic_string/hash&oldid=165917"

      [8]ページ先頭

      ©2009-2025 Movatter.jp