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

#include <tpl_lhash.H>

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

Clases

class  Iterator
 

Tipos públicos

typedef BucketType Bucket
 
typedef size_t(* Hash_Fct )(const Key &)
 
typedef Key Key_Type
 
typedef Key Item_Type
 

Métodos públicos

 GenLhashTable (Hash_Fct __hash_fct, size_t table_size=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::bad_alloc)
 
void swap (GenLhashTable &other)
 
void empty ()
 Vacía la tabla hash; libera memoria de todas las cubetas.
 
Hash_Fct get_hash_fct () const
 
void set_hash_fct (Hash_Fct fct)
 Set the internal hash function.
 
float current_alpha () const
 return the current table load
 
Bucket * insert (Bucket *bucket)
 
Bucket * search (const Key &key) const
 
Bucket * remove (Bucket *bucket)
 
size_t resize (size_t new_size) throw (std::exception, std::bad_alloc)
 
virtual ~GenLhashTable ()
 
Bucket * search_next (Bucket *bucket) const
 
const size_t & capacity () const
 Retorna el tamaño de la tabla.
 
const size_t & size () const
 Retorna el número de elementos que contiene la tabla.
 
const size_t & get_num_busy_slots () const
 Retorna la cantidad de entradas del arreglo que están ocupadas.
 
bool is_empty () const
 
 HASH_STATS ()
 

Atributos protegidos

Hash_Fct hash_fct
 
size_t len
 
float lower_alpha
 
float upper_alpha
 

Descripción detallada

template<typename Key, class BucketType, class Cmp>
class Aleph::GenLhashTable< Key, BucketType, Cmp >

Tabla hash genérica con resolución de colisiones por encadenamiento separado.

El tipo GenLhashTable implanta una tabla hash genérica con resolución de colisiones por encadenamiento separado en la cual el tipo de cubeta es un parámetro tipo.

Normalmente, este es destinado como back-end de los tipos LhashTable y LhashTableVtl, los cuales son fundamentalmente lo mismo, a excepción de que éstos ya tienen definidos su clases cubetas sin o con destructor virtual.

Parámetros
Keyclave de indización de la tabla.
BucketTypeel tipo de cubeta.
Cmpclase de comparación entre las claves.
Ver también
LhashTable LhashTableVtl

Documentación del constructor y destructor

template<typename Key, class BucketType, class Cmp>
Aleph::GenLhashTable< Key, BucketType, Cmp >::GenLhashTable ( Hash_Fct  __hash_fct,
size_t  table_size = 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::bad_alloc
)
inline

Instancia una tabla hash genérica.

Parámetros
[in]__hash_fctla función hash.
[in]table_sizeel tamaño de la tabla.
[in]__remove_all_bucketssi es true, entonces se liberan todas las cubetas cuando se invoca al destructor.
Excepciones
bad_allocsi no hay memoria para apartar la tabla.
template<typename Key, class BucketType, class Cmp>
virtual Aleph::GenLhashTable< Key, BucketType, Cmp >::~GenLhashTable ( )
inlinevirtual

Libera la memoria de la tabla y si remove_all_buckets es true (especificado en el constructor), entonces también se libera la memoria de todas las cubetas.

Documentación de las funciones miembro

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

Inserta en la tabla la cubeta bucket y retorna su dirección si la clave no está en la tabla; de lo contrario se retorna NULL

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

Elimina de la tabla la cubeta bucket. Retorna la dirección de la cubeta. ATENCIÓN: no se verifica que la cubeta pertenezca a la tabla.

template<typename Key, class BucketType, class Cmp>
size_t Aleph::GenLhashTable< Key, BucketType, Cmp >::resize ( size_t  new_size)
throw (std::exception,
std::bad_alloc
)
inline

Reajusta la dimensión de la tabla hash al valor new_size y reubica las claves. Dispara bad_alloc si no hay suficiente memoria para reubicar el arreglo.

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

Busca en la tabla una cubeta con la clave key. Retorna un puntero a la cubeta si se encuentra; NULL de lo contrario.

template<typename Key, class BucketType, class Cmp>
Bucket* Aleph::GenLhashTable< Key, BucketType, Cmp >::search_next ( Bucket *  bucket) const
inline

retorna la próxima cubeta que colisiona con bucket. Si no existe, entonces se retorna NULL.


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

Leandro Rabindranath León