std::hash (std::string, std::wstring, std::u16string, std::u32string, std::pmr::string, std::pmr::wstring, std::pmr::u16string, std::pmr::u32string)
Definido en el archivo de encabezado <string> | ||
template<>struct hash<std::string>; template<>struct hash<std::wstring>; | (desde C++11) | |
template<>struct hash<std::pmr::string>; template<>struct hash<std::pmr::wstring>; | (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) |
Apoyo de generación de dispersión para vistas sobre cadena (especialización de plantilla de clase) |