Referencia de la plantilla de la Clase LinearHashTable
[Tablas hash]

Tabla hash lineal con cubetas sin destructor virtual. Más...

Diagrama de herencias de LinearHashTable

Inheritance graph
[leyenda]
Diagrama de colaboración para LinearHashTable:

Collaboration graph
[leyenda]

Lista de todos los miembros.

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.
Bucketinsert (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.
Bucketremove (Bucket *bucket)
 Elimina la cubeta bucket. Atención: no se verifica si la cubeta pertenece a la tabla.
Bucketsearch (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.


Descripción detallada

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

Básicamente, una tabla hash lineal es una tabla hash con resolución de colisiones por encadenamiento separado pero con la diferencia de que el tamaño de la tabla aumenta dinámicamente para asegurar que el factor de carga, típicamente llamado $\alpha$, esté delimitado entre dos valores inferior y superior, respectivamente.

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.

Parámetros:
Key el tipo de clave por el cual se indiza la tabla.
Cmp clase de comparación entre las claves.
Ver también:
DynArray LinearHashTableVtl

Definición en la línea 456 del archivo tpl_linHash.H.


Documentación del constructor y destructor

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.

Parámetros:
[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.
Excepciones:
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.


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

Leandro R. León