Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Funciones no miembro
E/S
Comparación
(hasta C++20)(hasta C++20)(hasta C++20)(hasta C++20)(hasta C++20)(C++20)
Conversión numérica (C++11)
Clases auxiliares
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)
Guías de deducción(C++17)
 
Definido en el archivo de encabezado <string>
template<>struct hash<std::string>;

template<>struct hash<std::wstring>;
template<>struct hash<std::u8string>;// c++20
template<>struct hash<std::u16string>;

template<>struct hash<std::u32string>;
(desde 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>;
(desde C++20)

Las especializaciones de plantilla de std::hash para las varias clases de cadenas permiten que los usuarios obtengan los hashes (resúmenes) de las cadenas.

Estos hashes son iguales que los hashes de las clases std::basic_string_view correspondientes: Si S es uno de estos tipos de cadena, SV es el tipo de la vista sobre cadena correspondiente, y si s es un objeto de tipo S, entonces std::hash<S>()(s)==std::hash<SV>()(SV(s)).

(desde C++17)

[editar]Ejemplo

El siguiente código muestra una posible salida de una función hash utilizada en una cadena:

#include <iostream>#include <string>#include <string_view>#include <functional>#include <memory_resource>usingnamespace std::literals;   int main(){auto sv ="Al valiente mis ataques!"sv;std::string s(sv);std::pmr::string pmrs(sv);// usar asignador de memoria por defecto   std::cout<<std::hash<std::string_view>{}(sv)<<'\n';std::cout<<std::hash<std::string>{}(s)<<'\n';std::cout<<std::hash<std::pmr::string>{}(pmrs)<<'\n';}

Posible salida:

3544599705012401047 3544599705012401047 3544599705012401047

[editar]Véase también

(C++11)
Objeto función de dispersión (hash).
(plantilla de clase)[editar]
Apoyo de generación de dispersión para vistas sobre cadena
(especialización de plantilla de clase)[editar]
close