Namespaces
Variants

C++ named requirements: Hash (since C++11)

From cppreference.net
C++ named requirements

Un Hash es un objeto función para el cual la salida depende únicamente de la entrada y tiene una probabilidad muy baja de producir la misma salida dados diferentes valores de entrada.

Requisitos

El tipo T satisface Hash si

Dado

  • h , un valor de tipo T o const T , cuyo tipo de argumento es Key ,
  • k , un valor de tipo convertible a Key o const Key ,
  • u , una expresión lvalue de tipo Key .

Las siguientes expresiones deben ser válidas y tener sus efectos especificados.

Expresión Tipo de retorno Requisitos
h ( k ) std::size_t El valor retornado depende únicamente del valor de k durante la duración del programa.

Todas las evaluaciones de h ( k ) ejecutadas dentro de una ejecución dada de un programa producen el mismo resultado para el mismo valor de k .

La probabilidad de h ( a ) == h ( b ) para a ! = b debe aproximarse a 1.0 / std:: numeric_limits < std:: size_t > :: max ( ) .

h ( u ) std::size_t u no es modificado.

Biblioteca estándar

(C++11)
objeto función hash
(plantilla de clase)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2291 C++11 se requerían mismos resultados para mismos argumentos en todos los casos solo requerido dentro de una única ejecución