std::hash
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <functional> | ||
template<class Key > struct hash;// not defined | (dal C++11) | |
You can help to correct and verify the translation. Click here for instructions.
Key
.Key
.You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
k1
e k2
che sono uguali, std::hash<Key>()(k1)== std::hash<Key>()(k2).k1
and k2
that are equal, std::hash<Key>()(k1)== std::hash<Key>()(k2).You can help to correct and verify the translation. Click here for instructions.
k1
e k2
che non sono uguali, la probabilità che std::hash<Key>()(k1)== std::hash<Key>()(k2) dovrebbe essere molto piccolo, avvicinando 1.0/std::numeric_limits<size_t>::max().k1
and k2
that are not equal, the probability that std::hash<Key>()(k1)== std::hash<Key>()(k2) should be very small, approaching 1.0/std::numeric_limits<size_t>::max().You can help to correct and verify the translation. Click here for instructions.
CopyConstructible
e Destructible
.CopyConstructible
and Destructible
.You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica]Membri tipi
argument_type | Key |
result_type | std::size_t |
[modifica]Membri funzioni
costruisce un oggetto funzione hash Original: constructs a hash function object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
calcolare l'hash dell'argomento Original: calculate the hash of the argument The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) |
[modifica]Specializzazioni standard per tipi di base
Elemento definito nell'header <functional> | ||
template<>struct hash<bool>; template<>struct hash<char>; | ||
[modifica]Specializzazioni standard per i tipi di libreria
(C++11) (C++11) (C++11) (C++11) | supporto per l'hash di stringhe (classe modello di specializzazione) |
(C++11) | sostegno hash per std::error_code Original: hash support for std::error_code The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::bitset Original: hash support for std::bitset The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::unique_ptr Original: hash support for std::unique_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::shared_ptr Original: hash support for std::shared_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::type_index Original: hash support for std::type_index The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::vector<bool> Original: hash support for std::vector<bool> The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
(C++11) | sostegno hash per std::thread::id Original: hash support for std::thread::id The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe modello di specializzazione) |
[modifica]Esempi
Viene illustrato il calcolo di un hash per std::string, un tipo che ha già una specializzazione hash .
Demonstrates the computation of a hash for std::string, a type that already has a hash specialization.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>#include <functional>#include <string> int main(){std::string str ="Meet the new boss..."; std::hash<std::string> hash_fn; size_t str_hash = hash_fn(str); std::cout<< str_hash <<'\n';}
Output:
391070135
Viene illustrata la creazione di una funzione hash per un tipo definito dall'utente. Usando questo come parametro di template per std::unordered_map, std::unordered_set, ecc richiede anche la specializzazione di std::equal_to .
Demonstrates creation of a hash function for a user defined type. Using this as a template parameter for std::unordered_map, std::unordered_set, etc. also requires specialization of std::equal_to.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>#include <functional>#include <string> struct S {std::string first_name;std::string last_name;}; template<class T>class MyHash; template<>class MyHash<S>{public: size_t operator()(const S &s)const{ size_t h1 = std::hash<std::string>()(s.first_name); size_t h2 = std::hash<std::string>()(s.last_name);return h1 ^(h2 <<1);}}; int main(){std::string s1 ="Hubert";std::string s2 ="Farnsworth"; std::hash<std::string> h1; S n1; n1.first_name= s1; n1.last_name= s2; std::cout<<"hash(s1) = "<< h1(s1)<<"\n"<<"hash(s2) = "<< std::hash<std::string>()(s2)<<"\n"<<"hash(n1) = "<< MyHash<S>()(n1)<<"\n"; }
Output:
hash(s1) = 6119893563398376542 hash(s2) = 14988020022735710972 hash(n1) = 17649170831080298918
Viene illustrato come specializzarsi std::hash di un tipo definito dall'utente .
Demonstrates how to specialize std::hash for a user defined type.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>#include <functional>#include <string> struct S {std::string first_name;std::string last_name;}; namespace std {template<>class hash<S>{public: size_t operator()(const S &s)const{ size_t h1 = std::hash<std::string>()(s.first_name); size_t h2 = std::hash<std::string>()(s.last_name);return h1 ^( h2 <<1);}};} int main(){ S s; s.first_name="Bender"; s.last_name="Rodriguez"; std::hash<S> hash_fn; std::cout<<"hash(s) = "<< hash_fn(s)<<"\n";}
Output:
hash(s) = 32902390710