hash_compare (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

La clase de plantilla describe un objeto que se puede usar con cualquiera de los contenedores asociativos hash (hash_map, hash_multimap, hash_set o hash_multiset) como objeto de parámetro Traits predeterminado para ordenar y aplicar algoritmos hash a los elementos que contienen.

template<class Key, class Traits = less<Key> >  
   class hash_compare  
   {  
   Traits comp;  
public:  
   const size_t bucket_size = 4;  
   const size_t min_buckets = 8;  
   hash_compare( );  
   hash_compare( Traits pred );  
   size_t operator( )( const Key& _Key ) const;  
   bool operator( )(   
      const Key& _Key1,  
      const Key& _Key2  
   ) const;  
   };  

Cada contenedor asociativo de hash almacena un objeto traits hash de tipo Traits (un parámetro de plantilla). Puede derivar una clase de una especialización de hash_compare para reemplazar de forma selectiva ciertas funciones y objetos o puede proporcionar su propia versión de esta clase si cumple ciertos requisitos mínimos. En concreto, para un objeto hash_comp de tipo hash_compare<Key, Traits>, los contenedores anteriores requieren el siguiente comportamiento:

  • Para todos los valores _Key de tipo Key, la llamada hash_comp(_Key) actúa como función hash, que produce una distribución de valores de tipo size_t. La función suministrada por hash_compare devuelve _Key.

  • Para cualquier valor _Key1 de tipo Key que preceda a _Key2 en la secuencia y que tenga el mismo valor hash (valor devuelto por la función hash), hash_comp(_Key2, _Key1) es false. La función debe imponer una ordenación total en los valores de tipo Key. La función proporcionada por hash_compare devuelve comp(_Key2, _Key1), donde comp es un objeto almacenado de tipo Traits que puede especificar al construir el objeto hash_comp. Para el tipo de parámetro Traits predeterminado less<Key>, los criterios de ordenación nunca disminuyen en valor.

  • La constante entera bucket_size especifica el número medio de elementos por “depósito” (entrada de tabla hash) que el contenedor debe intentar no superar. Debe ser mayor que cero. El valor proporcionado por hash_compare es 4.

  • La constante entera min_buckets especifica el número mínimo de depósitos que se deben mantener en la tabla hash. Debe ser una potencia de dos y mayor que cero. El valor proporcionado por hash_compare es 8.

En Visual C++ .NET 2003, los miembros de los archivos de encabezado <hash_map> y <hash_set> ya no están en el espacio de nombres std, sino que se han movido al espacio de nombres stdext. Vea El espacio de nombres stdext para obtener más información.

Vea los ejemplos de hash_map::hash_map, hash_multimap::hash_multimap, hash_set::hash_set y hash_multiset::hash_multiset para ver ejemplos sobre cómo declarar y usar hash_compare.

Encabezado: <hash_map>

Espacio de nombres: stdext

Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: