Tipos públicos | |
typedef GenLinearHashTable < Key, LhashBucket, Cmp > ::Bucket | Bucket |
El tipo de cubeta que maneja la tabla. | |
typedef GenLhashTable< Key, LhashBucket< Key >, Cmp > ::Hash_Fct | Hash_Fct |
El tipo de función hash. | |
Métodos públicos | |
const size_t & | busy_slots () const |
Retorna la cantidad de entradas vacía que tiene la tabla. | |
const size_t & | capacity () const |
Retorna el tamaño de la tabla. | |
void | empty () |
Vacía toda la tabla. Todas las cubetas son liberadas y el tamaño es ajustado al inicial. | |
const size_t & | expansions () const |
Retorna el nivel de expansiones que se han realizado sobre la tabla. | |
Bucket * | insert (Bucket *bucket) |
Inserta la cubeta bucket en la tabla hash lineal. | |
LinearHashTable (Hash_Fct hash_fct, const size_t &len, const float &lower_alpha=Base::default__lower_alpha, const float &upper_alpha=Base::default_upper_alpha, const bool &remove_all_buckets=true) throw (std::exception, std::length_error, std::runtime_error, std::bad_alloc, std::overflow_error) | |
Instancia una tabla hash lineal con cubetas sin destructores virtuales. | |
Bucket * | remove (Bucket *bucket) |
Elimina la cubeta bucket. Atención: no se verifica si la cubeta pertenece a la tabla. | |
Bucket * | search (const Key &key) |
Busca la clave key en la tabla hash lineal. Retorna un puntero a la cubeta que contiene key si ésta se encuentra en la tabla; NULL de lo contrario. | |
void | set_lower_alpha (const float &__lower_alpha) |
Cambia el umbral inferior de carga en que la tabla comienza a contraerse. Dispara domain_error si el nuevo umbral es superior que el umbral superior (upper_alpha). | |
void | set_upper_alpha (const float &__upper_alpha) |
Cambia el umbral superior de carga en que la tabla comienza a expandirse. Dispara domain_error si el nuevo umbral es inferior que el umbral inferior (lower_alpha). | |
const size_t & | size () const |
Retorna la cantidad de elementos que tiene la tabla. | |
Atributos públicos estáticos | |
static const float | default_lower_alpha |
valor por omisión del umbral inferior de carga. | |
static const float | default_upper_alpha |
valor por omisión del umbral superior de carga. |
Internamente, la tabla utiliza un arreglo dinámico del tipo DynArray. Esto conlleva ahorros de memoria por entradas de la tabla que no hayan sido escritas.
Key | el tipo de clave por el cual se indiza la tabla. | |
Cmp | clase de comparación entre las claves. |
Definición en la línea 456 del archivo tpl_linHash.H.
LinearHashTable | ( | Hash_Fct | hash_fct, | |
const size_t & | len, | |||
const float & | lower_alpha = Base::default__lower_alpha , |
|||
const float & | upper_alpha = Base::default_upper_alpha , |
|||
const bool & | remove_all_buckets = true | |||
) | throw (std::exception, std::length_error, std::runtime_error, std::bad_alloc, std::overflow_error) [inline] |
Instancia una tabla hash lineal tamaño __len que cuyas cubetas no utilizan destructores virtuales.
[in] | hash_fct | función hash. |
[in] | len | tamaño inicial y mínimo de la tabla. |
[in] | upper_alpha | umbral superior en que la tabla debe expandirse. |
[in] | lower_alpha | umbral inferior en que la tabla debe contraerse. |
length_error | si len es igual a superior que la máxima dimensión permitida para un arreglo dinámico. | |
domain_error | si upper_alpha es menor o igual a lower_alpha. | |
bad_alloc | si no hay suficiente memoria | |
overflow_error | si ocurre un desborde desde DynArray (causado por sus cálculos internos). |
Definición en la línea 491 del archivo tpl_linHash.H.