#include <tpl_odhash.H>
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) | |
ODhashTable & | operator= (const ODhashTable &other) |
ODhashTable & | operator= (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 | |
Bucket * | table = NULL |
Hash_Fct | hash_fct = NULL |
Hash_Fct | second_hash_fct = NULL |
Atributos protegidos | |
size_t | len |
float | lower_alpha |
float | upper_alpha |
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:
|
inline |
Instancia una tabla hash cerrada con resolución de colisiones por doble hash.
[in] | __first_hash_fct | función hash para el primer sondeo. |
[in] | __second_hash_fct | función hash para el segundo sondeo. |
[in] | len | tamaño de la tabla. |
bad_alloc | si no hay memoria para la tabla de cubetas. |
|
inline |
busca en la tabla la clave key. Retorna un puntero al registro asociado a key dentro de la tabla; NULL de lo contrario.