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::GenLinearHashTable< Key, BucketType, Cmp >

#include <tpl_linHash.H>

+ Diagrama de colaboración para Aleph::GenLinearHashTable< Key, BucketType, Cmp >:

Clases

class  Iterator
 

Tipos públicos

typedef size_t(* Hash_Fct )(const Key &)
 
typedef BucketType< Key > Bucket
 El tipo de cubeta.
 
typedef Key Key_Type
 
typedef Key Item_Type
 

Métodos públicos

void set_hash_fct (Hash_Fct fct)
 Set the internal hash function.
 
Hash_Fct get_hash_fct () const
 
const Cmp & get_compare () const
 
float current_alpha () const
 return the current table load
 
 GenLinearHashTable (Hash_Fct __hash_fct=Aleph::dft_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 __remove_all_buckets=true, const bool __with_resize=true) throw (std::exception, std::length_error, std::domain_error, std::bad_alloc, std::overflow_error)
 
void swap (GenLinearHashTable &other)
 
void empty ()
 
Bucketsearch (const Key &key) const
 
const size_t & size () const
 Retorna la cantidad de elementos que tiene la tabla.
 
bool is_empty () const
 return true is table is empty
 
const size_t & capacity () const
 Retorna el tamaño de la tabla.
 
const size_t & busy_slots () const
 Retorna la cantidad de entradas vacía que tiene la tabla.
 
const size_t & expansions () const
 
Bucketinsert (Bucket *bucket)
 
size_t resize (size_t)
 Provided for generic programming compatibility.
 
Bucketremove (Bucket *bucket)
 
void print ()
 
 HASH_STATS ()
 

Atributos protegidos

Hash_Fct hash_fct
 
float upper_alpha
 
float lower_alpha
 
size_t len
 

Descripción detallada

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

Tabla hash lineal genérica.

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.

Este tipo es genérico y no está destinado a usarse. En su lugar, utilícese LinearHashTable o LinearHashTableVtl según se desee utilizar cubetas sin o con destructor virtual.

Parámetros
Keyel tipo de clave por el cual se indiza la tabla.
BucketTypeel tipo de cubeta entre LinHashBucket o LinHashBucketVtl.
Cmpclase de comparación entre las claves.
Ver también
DynArray LinearHashTable LinearHashTableVtl

Documentación de los 'Typedef' miembros de la clase

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
typedef size_t(* Aleph::GenLinearHashTable< Key, BucketType, Cmp >::Hash_Fct)(const Key &)

El tipo de función hash. Debe retornar valores positivos seudo aleatorios, entre cero y el número más grande posible.

Documentación del constructor y destructor

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
Aleph::GenLinearHashTable< Key, BucketType, Cmp >::GenLinearHashTable ( Hash_Fct  __hash_fct = Aleph::dft_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  __remove_all_buckets = true,
const bool  __with_resize = true 
)
throw (std::exception,
std::length_error,
std::domain_error,
std::bad_alloc,
std::overflow_error
)
inline

Instancia una tabla hash lineal genérica.

Instancia una tabla hash lineal genérica de tamaño __len.

Parámetros
[in]__hash_fctfunción hash.
[in]__lentamaño inicial y mínimo de la tabla.
[in]__upper_alphaumbral superior en que la tabla debe expandirse.
[in]__lower_alphaumbral inferior en que la tabla debe contraerse.
[in]__remove_all_bucketssi es true, entonces se liberan las cuvetas de la tabla. De lo contrario, éstas permanecen intactas. Por omisión el valor es true.
Excepciones
length_errorsi __ es igual a superior que la máxima dimensión permitida para un arreglo dinámico.
domain_errorsi __upper_alpha es menor o igual a __lower_alpha.
bad_allocsi no hay suficiente memoria
overflow_errorsi ocurre un desborde desde DynArray (causado por sus cálculos internos).

Documentación de las funciones miembro

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
void Aleph::GenLinearHashTable< Key, BucketType, Cmp >::empty ( )
inline

Vacía toda la tabla. Todas las cubetas son liberadas y el tamaño es ajustado al inicial.

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
const size_t& Aleph::GenLinearHashTable< Key, BucketType, Cmp >::expansions ( ) const
inline

Retorna el nivel de expansiones que se han realizado sobre la tabla.

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
Bucket* Aleph::GenLinearHashTable< Key, BucketType, Cmp >::insert ( Bucket bucket)
inline

Insert bucket in the table. Return bucket if bucket->get_key() is not in the table, NULL otherwise

template<typename Key, template< class > class BucketType, class Cmp = Aleph::equal_to<Key>>
Bucket* Aleph::GenLinearHashTable< Key, BucketType, Cmp >::remove ( Bucket bucket)
inline

Elimina la cubeta bucket. Atención: no se verifica si la cubeta pertenece a la tabla.

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

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.


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

Leandro Rabindranath León