std::hash <std::experimental::optional>
From cppreference.com
< cpp | experimental | optional
| ヘッダ <experimental/optional>で定義 |
||
| template< class T > struct hash<std::experimental::optional<T>>; |
(Library Fundamentals TS) | |
std::hash の std::experimental::optional クラスに対するテンプレート特殊化により、ユーザーは optional オブジェクトに含まれる値のハッシュ値を取得できます。
[編集] テンプレートパラメータ
| T | - | optional オブジェクトに含まれる値の型。特殊化 std::hash<T> は、クラステンプレート hash の要件を満たす必要があります。 |
[編集] 例
このコードを実行
#include <experimental/optional> #include <iostream> #include <string> #include <unordered_set> using namespace std::literals; int main() { // hash<optional> makes it possible to use unordered_set std::unordered_set<std::experimental::optional<std::string>> s = { "abc"s, std::experimental::nullopt, "def"s }; for (const auto& o : s) std::cout << o.value_or("(null)") << ' '; std::cout << '\n'; }
実行結果の例
def abc (null)
[編集] 関連項目
| (C++11) |
ハッシュ関数オブジェクト (クラステンプレート) |