名前空間
変種
操作

std::hash (std::string, std::wstring, std::u16string, std::u32string, std::pmr::string, std::pmr::wstring, std::pmr::u16string, std::pmr::u32string)

提供: cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
非メンバ関数
入出力
比較
数値変換 (C++11)
ヘルパークラス
hash<std::string>hash<std::wstring>hash<std::u32string>hash<std::u16string>hash<std::u8string>
(C++11)(C++11)(C++11)(C++11)(C++20)
hash<std::pmr::string>hash<std::pmr::wstring>hash<std::pmr::u32string>hash<std::pmr::u16string>hash<std::pmr::u8string>
(C++20)(C++20)(C++20)(C++20)(C++20)
推定ガイド(C++17)
 
ヘッダ <string> で定義
template<> struct hash<std::string>;
template<> struct hash<std::wstring>;
(C++11以上)
template<> struct hash<std::u8string>;
(C++20以上)
template<> struct hash<std::u16string>;
template<> struct hash<std::u32string>;
(C++11以上)
template<> struct hash<std::pmr::string>;

template<> struct hash<std::pmr::wstring>;
template<> struct hash<std::pmr::u8string>;
template<> struct hash<std::pmr::u16string>;

template<> struct hash<std::pmr::u32string>;
(C++20以上)

テンプレート std::hash の様々な文字列クラスに対する特殊化は、ユーザが文字列のハッシュを取得することを可能とします。

これらのハッシュは対応する std::basic_string_view クラスのハッシュと等しくなります。 S をこれらの文字列型のひとつ、 SV をそれに対応する文字列ビュー型、 s を S 型オブジェクトとした場合、 std::hash<S>()(s) == std::hash<SV>()(SV(s)) が成り立ちます。

(C++17以上)

[編集]

以下のコードは文字列に対して使用したハッシュ関数の出力の一例を示します。

#include <iostream>
#include <string>
#include <functional>
 
int main()
{
    std::string s = "Stand back! I've got jimmies!";
    std::hash<std::string> hash_fn;
 
    size_t hash = hash_fn(s);
 
    std::cout << hash << '\n';
}

出力:

325378910

[編集] 関連項目

(C++11)
ハッシュ関数オブジェクト
(クラステンプレート) [edit]