Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::ODhashTable< Key, Cmp >

#include <tpl_odhash.H>

+ Diagrama de herencias de Aleph::ODhashTable< Key, Cmp >
+ Diagrama de colaboración para Aleph::ODhashTable< Key, Cmp >:

Clases

struct  Bucket
 

Tipos públicos

enum  Status { EMPTY, BUSY, DELETED }
 
enum  Probe { NO_PROBED, FIRST_PROBE, SECOND_PROBE, LINEAR_PROBE }
 
typedef Key Key_Type
 
typedef Key Item_Type
 
typedef size_t(* Hash_Fct )(const Key &)
 El tipo de función hash.
 

Métodos públicos

void swap (ODhashTable &other)
 
 ODhashTable (Hash_Fct __first_hash_fct=Aleph::dft_hash_fct< Key >, Hash_Fct __second_hash_fct=Aleph::snd_hash_fct< Key >, const size_t __len=Primes::DefaultPrime, const float &__lower_alpha=hash_default_lower_alpha, const float &__upper_alpha=hash_default_upper_alpha, const bool __with_resize=true)
 
 ~ODhashTable ()
 Libera toda la tabla hash.
 
 ODhashTable (const ODhashTable &other)
 
 ODhashTable (ODhashTable &&other)
 
ODhashTableoperator= (const ODhashTable &other)
 
ODhashTableoperator= (ODhashTable &&other)
 
 OHASH_COMMON (ODhashTable)
 
 Generic_Traverse (Key)
 
 Functional_Methods (Key)
 
 Equal_To_Method (ODhashTable)
 
Key * search (const Key &key) const
 
Hash_Fct get_second_hash_fct () const
 
void set_second_hash_fct (Hash_Fct fct)
 
void remove (const Key &key)
 
Stats stats () const
 

Atributos públicos

Buckettable = NULL
 
Hash_Fct hash_fct = NULL
 
Hash_Fct second_hash_fct = NULL
 

Atributos protegidos

size_t len
 
float lower_alpha
 
float upper_alpha
 

Descripción detallada

template<typename Key, class Cmp = Aleph::equal_to<Key>>
class Aleph::ODhashTable< Key, Cmp >

Tabla hash cerrada con resolución de colisiones por doble función hash.

Este tipo instrumenta una tabla hash cerrada (el arreglo es contiguo en memoria), que guarda las colisiones dentro de la misma tabla. Cuando ocurre una colisión, se invoca una segunda función hash que para sondear una cubeta disponible. Si se encuentra, entonces la clave y el registro se colocan en la cubeta disponible; de lo contrario, se sondea linealmente a partir del índice dado por la segunda función hash.

La tabla emplea un método que elimina sin relocalización y en tiempo constante las cubetas eliminadas que están en el medio de una cadena de búsqueda.

ODhashTable maneja dos parámetros tipo:

  1. Key: el tipo de dato que guarda la tabla.
  2. Record: el tipo de dato a mapear por la clave.
  3. Cmp clase de comparación entre las claves; debe retornar true si las claves son iguales.

Documentación del constructor y destructor

template<typename Key, class Cmp = Aleph::equal_to<Key>>
Aleph::ODhashTable< Key, Cmp >::ODhashTable ( Hash_Fct  __first_hash_fct = Aleph::dft_hash_fct<Key>,
Hash_Fct  __second_hash_fct = Aleph::snd_hash_fct<Key>,
const size_t  __len = Primes::DefaultPrime,
const float &  __lower_alpha = hash_default_lower_alpha,
const float &  __upper_alpha = hash_default_upper_alpha,
const bool  __with_resize = true 
)
inline

Instancia una tabla hash cerrada con resolución de colisiones por doble hash.

Parámetros
[in]__first_hash_fctfunción hash para el primer sondeo.
[in]__second_hash_fctfunción hash para el segundo sondeo.
[in]lentamaño de la tabla.
Excepciones
bad_allocsi no hay memoria para la tabla de cubetas.

Documentación de las funciones miembro

template<typename Key, class Cmp = Aleph::equal_to<Key>>
Key* Aleph::ODhashTable< Key, Cmp >::search ( const Key &  key) const
inline

busca en la tabla la clave key. Retorna un puntero al registro asociado a key dentro de la tabla; NULL de lo contrario.


La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro Rabindranath León