std:: hash <std::optional>
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Iterators | ||||
|
(C++26)
|
||||
|
(C++26)
|
||||
| Monadic operations | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
| Modifiers | ||||
| Non-member functions | ||||
| Deduction guides | ||||
| Helper classes | ||||
|
hash
<std::optional>
|
||||
| Helper objects | ||||
|
Défini dans l'en-tête
<optional>
|
||
|
template
<
class
T
>
struct hash < std:: optional < T >> ; |
(depuis C++17) | |
La spécialisation de modèle de
std::hash
pour la classe
std::optional
permet aux utilisateurs d'obtenir les hachages des valeurs contenues dans les objets
optional
.
La spécialisation
std::hash
<
std::
optional
<
T
>>
est activée (voir
std::hash
) si
std::
hash
<
std::
remove_const_t
<
T
>>
est activée, et est désactivée sinon.
Lorsqu'il est activé, pour un objet
o
de type
std::
optional
<
T
>
qui contient une valeur,
std::hash
<
std::
optional
<
T
>>
(
)
(
o
)
évalue la même valeur que
std::
hash
<
std::
remove_const_t
<
T
>>
(
)
(
*
o
)
. Pour un optional qui ne contient pas de valeur, le hash est non spécifié.
Les fonctions membres de cette spécialisation ne sont pas garanties d'être noexcept car le hachage du type sous-jacent pourrait lever une exception.
Paramètres du modèle
| T | - |
le type de la valeur contenue dans l'objet
optional
|
Exemple
#include <iostream> #include <optional> #include <string> #include <unordered_set> using namespace std::literals; int main() { using OptStr = std::optional<std::string>; // hash<optional> permet d'utiliser unordered_set std::unordered_set<OptStr> s = { "ABC"s, "abc"s, std::nullopt, "def"s }; for (const auto& o : s) std::cout << o.value_or("(null)") << '\t' << std::hash<OptStr>{}(o) << '\n'; }
Sortie possible :
def 11697390762615875584 (null) 18446744073709548283 abc 3663726644998027833 ABC 11746482041453314842
Voir aussi
|
(C++11)
|
objet fonction de hachage
(modèle de classe) |