std::hash
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Definido no cabeçalho <functional> | ||
template<class Key > struct hash;// not defined | (desde 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
que são iguais, 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
que não são iguais, a probabilidade de que std::hash<Key>()(k1)== std::hash<Key>()(k2) deve ser muito pequeno, aproximando-se 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.
Índice |
[editar]Tipos de membro
argument_type | Key |
result_type | std::size_t |
[editar]Funções de membro
constrói um objeto de função 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. (função pública membro) | |
calcular o hash do argumento 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. (função pública membro) |
[editar]Especializações padrão para tipos básicos
Definido no cabeçalho <functional> | ||
template<>struct hash<bool>; template<>struct hash<char>; | ||
[editar]Especializações padrão para tipos de biblioteca
(C++11) (C++11) (C++11) (C++11) | apoio de hash para strings Original: hash support for strings The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
(C++11) | apoio de hash para 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. (especialização modelo. classe) |
[editar]Exemplos
Demonstra o cálculo de um hash para std::string, um tipo que já tem uma especialização de 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';}
Saída:
391070135
Demonstra a criação de uma função hash para um tipo definido pelo usuário. Usando isso como um parâmetro de modelo para std::unordered_map, std::unordered_set, etc também exige especialização de 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"; }
Saída:
hash(s1) = 6119893563398376542 hash(s2) = 14988020022735710972 hash(n1) = 17649170831080298918
Demonstra como se especializar std::hash para um tipo definido pelo usuário .
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";}
Saída:
hash(s) = 32902390710