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::DynMapTree< Key, Data, Tree, Compare >

#include <tpl_dynMapTree.H>

+ Diagrama de herencias de Aleph::DynMapTree< Key, Data, Tree, Compare >
+ Diagrama de colaboración para Aleph::DynMapTree< Key, Data, Tree, Compare >:

Tipos públicos

typedef Key Key_Type
 
typedef Key Item_Type
 
typedef Data Value_Type
 
- Tipos públicos heredados desde Aleph::DynSetTree< std::pair< Key, Data >, Tree, Dft_Pair_Cmp< Key, Data, Compare > >
typedef Tree< std::pair< Key,
Data >, Dft_Pair_Cmp< Key,
Data, Compare > >::Node 
Node
 
typedef DynSetTree Set_Type
 
typedef std::pair< Key, Data > Item_Type
 
typedef std::pair< Key, Data > Key_Type
 

Métodos públicos

Data & get_data (const Key &key)
 
const Key & get_key (Data *data_ptr)
 
Key * insert (const Key &key, const Data &data)
 
Key * insert (const Key &key, Data &&data=Data())
 
Key * insert (Key &&key, const Data &data)
 
Key * insert (Key &&key, Data &&data=Data())
 
Key * search_or_insert (const Key &key, const Data &data)
 
Data * search_or_insert (const Key &key, Data &&data)
 
Data * search_or_insert (Key &&key, const Data &data)
 
Data * search_or_insert (Key &&key, Data &&data)
 
Key * put (const Key &key, const Data &data)
 
Key * put (const Key &key, Data &&data)
 
Key * put (Key &&key, const Data &data)
 
Key * put (Key &&key, Data &&data)
 
size_t remove (const Key &key)
 
bool test_key (const Key &key) const
 Retorna true si key está presente dentro del mapeo.
 
bool has (const Key &key) const
 
Data * test (const Key &key)
 
Data * search (const Key &key) const
 
Data & find (const Key &key)
 
 Map_Sequences_Methods ()
 
 Generate_Proxy_Operator (DynMapTree)
 
- Métodos públicos heredados desde Aleph::DynSetTree< std::pair< Key, Data >, Tree, Dft_Pair_Cmp< Key, Data, Compare > >
void swap (DynSetTree &dset)
 
 DynSetTree (Dft_Pair_Cmp< Key, Data, Compare > &&cmp=Dft_Pair_Cmp< Key, Data, Compare >())
 Instancia un conjunto dinámico vacío.
 
 DynSetTree (Dft_Pair_Cmp< Key, Data, Compare > &cmp)
 
 DynSetTree (const DynSetTree &srcTree)
 Instancia un conjunto dinámico copia de srcTree.
 
 DynSetTree (const DynList< std::pair< Key, Data > > &list)
 
 DynSetTree (DynSetTree &&srcTree)
 
void empty ()
 Elimina todos los elementos del conjunto.
 
DynSetTreeoperator= (const DynList< std::pair< Key, Data > > &list)
 
DynSetTreeoperator= (const DynSetTree &srcTree)
 Asigna a this el conjunto dinámico srcTree.
 
DynSetTreeoperator= (DynSetTree &&srcTree)
 Asigna a this el conjunto dinámico srcTree.
 
virtual ~DynSetTree ()
 Destructor; todos los elementos son liberados.
 
std::pair< Key, Data > * insert (const std::pair< Key, Data > &key)
 
std::pair< Key, Data > * insert (std::pair< Key, Data > &&key)
 
std::pair< Key, Data > * append (const std::pair< Key, Data > &key)
 
std::pair< Key, Data > * append (std::pair< Key, Data > &&key)
 
std::pair< Key, Data > * search_or_insert (const std::pair< Key, Data > &key)
 
std::pair< Key, Data > * search_or_insert (std::pair< Key, Data > &&key)
 
std::pair< Key, Data > * insert_dup (const std::pair< Key, Data > &key)
 
std::pair< Key, Data > * insert_dup (std::pair< Key, Data > &&key)
 
std::pair< Key, Data > * put (const std::pair< Key, Data > &key)
 Seudo sinonimo de insert; no retorna ningún valor.
 
std::pair< Key, Data > * put (std::pair< Key, Data > &&key)
 
size_t remove (const std::pair< Key, Data > &key)
 
bool exist (const std::pair< Key, Data > &key) const
 Retorna true si key pertenece al conjunto dinámico.
 
bool has (const std::pair< Key, Data > &key) const
 
bool contains (const std::pair< Key, Data > &key) const
 
std::pair< Key, Data > & find (const std::pair< Key, Data > &key) throw (std::exception, std::domain_error)
 
std::pair< int, std::pair< Key,
Data > * > 
find_position (const std::pair< Key, Data > &key) const
 
std::pair< Key, Data > * search (const std::pair< Key, Data > &key) const throw (std::exception, std::domain_error)
 
const std::pair< Key, Data > & min () const
 
const std::pair< Key, Data > & get_first ()
 
const std::pair< Key, Data > & max () const
 
const std::pair< Key, Data > & get_last ()
 
const std::pair< Key, Data > & get ()
 Sinónimo de max.
 
const size_t & size () const
 Retorna la cardinalidad del conjunto.
 
bool is_empty () const
 Retorna true si el conjunto está vacío.
 
size_t internal_path_length () const
 
Nodeget_root_node () const
 
const std::pair< Key, Data > & get_root () const
 
size_t height () const
 Calcula y retorna la altura del árbol binario de búsqueda.
 
void for_each_in_preorder (void(*visitFct)(Node *, int, int))
 
long position (const std::pair< Key, Data > &key) const
 
std::pair< Key, Data > & select (const size_t &i)
 
const std::pair< Key, Data > & select (const size_t &i) const
 
std::pair< Key, Data > & operator() (const size_t &i)
 
std::pair< Key, Data > & access (const size_t &i)
 
bool verify ()
 
void for_each_preorder (Key_Op &key_op)
 
void for_each_preorder (Key_Op &&key_op=Key_Op())
 
void for_each_inorder (Key_Op &key_op)
 
void for_each_inorder (Key_Op &&key_op=Key_Op())
 
void for_each_postorder (Key_Op &key_op)
 
void for_each_postorder (Key_Op &&key_op=Key_Op())
 
DynSetTreejoin (DynSetTree &t, DynSetTree &dup)
 
DynSetTreejoin (DynSetTree &t, DynSetTree &&dup=DynSetTree())
 
DynSetTreejoin_dup (DynSetTree &t)
 
bool split_key (const std::pair< Key, Data > &key, DynSetTree &l, DynSetTree &r)
 
void split_pos (const size_t pos, DynSetTree &l, DynSetTree &r)
 
void split_key_dup (const std::pair< Key, Data > &key, DynSetTree &l, DynSetTree &r)
 
bool traverse (Operation &op)
 
bool traverse (Operation &&op=Operation())
 
bool traverse (Operation &op) const
 
bool traverse (Operation &&op=Operation()) const
 
 Functional_Methods (std::pair< Key, Data >)
 
 Generic_Keys (std::pair< Key, Data >)
 
 Equal_To_Method (DynSetTree)
 

Descripción detallada

template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
class Aleph::DynMapTree< Key, Data, Tree, Compare >

Mapeo genérico instrumentado con árboles binarios de búsqueda.

DynMapTree define un mapeo entre un conjunto de claves, que no se pueden repetir, y un conjunto rango. El mapeo se implanta mediante alguna clase de árbol binario de búsqueda definido como parámetros tipo.

Los parámetros tipo de esta clase se definen del siguiente modo:

  1. Tree: la clase de árbol binario de búsqueda con que se desea instrumentar el mapeo. Los posibles tipos son BinTree Avl_Tree Splay_Tree Rb_Tree Treap y Rand_Tree.
  2. Key: tipo de clave de indización. También se le dice "dominio" del mapeo.
  3. Data: tipo del rango.
  4. Compare: criterio de comparación entre las claves.

Los elementos del mapeo pueden accederse mediante el operador [] colocando como parámetro la clave de indización.

Ver también
BinTree Avl_Tree Splay_Tree Rb_Tree Treap Rand_Tree

Documentación de las funciones miembro

template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Data& Aleph::DynMapTree< Key, Data, Tree, Compare >::find ( const Key &  key)
inline

Retorna dato asociado a una clave.

search(key) retorna un puntero al valor del dato asociado a la clave key.

Parámetros
[in]keyclave a buscar.
Devuelve
puntero al dato asociado a key si la clave existe en mapeo; NULL de lo contrario.
Excepciones
domain_errorsi la clave no está dentro del mapeo

Referenciado por Aleph::Huffman_Encoder_Engine::encode().

+ Gráfico de llamadas a esta función:

template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Key* Aleph::DynMapTree< Key, Data, Tree, Compare >::insert ( const Key &  key,
const Data &  data 
)
inline

Inserta un par en el mapeo.

insert(key,data) inserta en el mapeo un nuevo par (key,data) indizado por el valor de key. La operación no realiza inserción si el valor de key ya está presente en el mapeo.

Parámetros
[in]keyclave a insertar.
[in]datavalor a indizar por la clave key.
Devuelve
número de elementos que contiene el mapeo.
Excepciones
bad_allocsi no hay suficiente memoria.

Referenciado por Aleph::DynMapTree< string, Huffman_Node *, Treap_Vtl >::put(), Aleph::Huffman_Encoder_Engine::set_end_of_stream() y Aleph::Huffman_Encoder_Engine::set_freq().

+ Gráfico de llamadas a esta función:

template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Key* Aleph::DynMapTree< Key, Data, Tree, Compare >::put ( const Key &  key,
const Data &  data 
)
inline

Inserta un par en el mapeo.

put(key,data) inserta en el mapeo un nuevo par (key,data) indizado por el valor de key. La operación no realiza inserción si el valor de key ya está presente en el mapeo.

Parámetros
[in]keyclave a insertar.
[in]datavalor a indizar por la clave key.
Devuelve
número de elementos que contiene el mapeo.
Excepciones
bad_allocsi no hay suficiente memoria.
template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
size_t Aleph::DynMapTree< Key, Data, Tree, Compare >::remove ( const Key &  key)
inline

Elimina el dato asociado a la clave key.

remove(key) elimina del mapeo el dato asociado a la clave key.

Parámetros
[in]keyclave a eliminar.
Devuelve
número de elementos que contiene el mapeo.
template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Data* Aleph::DynMapTree< Key, Data, Tree, Compare >::search ( const Key &  key) const
inline

Retorna dato asociado a una clave.

search(key) retorna un puntero al valor del dato asociado a la clave key.

Parámetros
[in]keyclave a buscar.
Devuelve
puntero al dato asociado a key si la clave existe en mapeo; NULL de lo contrario.
Ver también
test
template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Key* Aleph::DynMapTree< Key, Data, Tree, Compare >::search_or_insert ( const Key &  key,
const Data &  data 
)
inline

Busca la clave key en el árbol binario de búsqueda o lo inserta en caso de no encontrarse.

search_or_insert(key) busca en el árbol binario un nodo cuya clave sea KEY(p). Si la clave se encuentra, entonces se retorna un puntero a ella; de lo contrario se inserta key en el árbol binario de búsqueda this.

Parámetros
[in]keyla clave a buscar o insertar.
Devuelve
puntero a la clave dentro del árbol
template<typename Key, typename Data, template< typename, class > class Tree = Avl_Tree, class Compare = Aleph::less<Key>>
Data* Aleph::DynMapTree< Key, Data, Tree, Compare >::test ( const Key &  key)
inline

Retorna dato asociado a una clave.

test(key) retorna un puntero al valor del dato asociado a la clave key.

Parámetros
[in]keyclave a buscar.
Devuelve
puntero al dato asociado a key si la clave existe en mapeo; NULL de lo contrario.

Referenciado por Aleph::Huffman_Encoder_Engine::set_freq().

+ Gráfico de llamadas a esta función:


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

Leandro Rabindranath León