Aleph-w  1.9
General library for algorithms and data structures
Aleph::IndexNode< GT, Compare, Tree, SN > Class Template Reference

#include <tpl_indexNode.H>

Public Member Functions

GT_Node * insert (GT_Node *p)
 
GT_Node * insert_in_graph (const GT_Node_Type &info)
 
GT_Node * insert_in_graph (GT_Node_Type &&info=GT_Node_Type())
 
GT_Node * search (GT_Node *p)
 
GT_Node * search (const GT_Node_Type &info)
 
void remove (GT_Node *p)
 Elimina del índice el nodo con dirección p.
 
void remove_from_graph (GT_Node *p)
 
void clear_index ()
 Borra el índice; todos los nodos son eliminados.
 
void build_index ()
 Inserta todos los nodos del grafo en el índice.
 
void clear_graph ()
 Elimina todos los nodos del grafo y del índice.
 
 IndexNode (GT &__g, SN &&__sn=SN())
 
 IndexNode (GT &__g, SN &__sn)
 
size_t size () const
 Retorna la cantidad de arcos que contiene el índice.
 

Detailed Description

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
class Aleph::IndexNode< GT, Compare, Tree, SN >

Construye un índice de nodos para su rápida búsqueda y recuperación.

IndexNode indiza los nodos de un grafo según un clave dada definida por el usuario.

La clase recibe los siguientes parámetros tipo:

  1. GT: el tipo de grafo basado en List_Graph.
  2. Compare: clase de comparación para la clave de indización. El contrato de esta clase es intrumentar el operador () así:
    template <class GT>
    struct Dft_Node_Cmp
    {
    bool
    operator () (typename GT::Node * p1, typename GT::Node * p2) const
    {
    // acceso a los nodos y comparación según el campo deseado
    }
    };

IndexNode recibe esta clase por omisión programada para comparar el valor retornado por get_info() sobre cada nodo. Para ello, el operador < del tipo GT::Node_Type debe estar implementado.

  1. SN: clase filtro para el iterador de nodos en caso de que se construya
  2. Tree: el tipo de árbol binario de búsqueda usado internamente para indizar las claves. Por omisión se usan treaps.
See also
IndexArc Index_Graph
Author
Leandro Rabindranath León (lrleon en ula punto ve)
Alejandro Mujica (aledrums en gmail punto com)

Constructor & Destructor Documentation

◆ IndexNode()

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
Aleph::IndexNode< GT, Compare, Tree, SN >::IndexNode ( GT &  __g,
SN &&  __sn = SN() 
)
inline

Crea un índice a partir de los nodos insertado en el grafo.

Parameters
[in]__gel grafo
[in]build_indexindica si se debe construir el índice durante la construcción
Exceptions
bad_allocsi no hay suficiente memoria.

Member Function Documentation

◆ insert()

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
GT_Node* Aleph::IndexNode< GT, Compare, Tree, SN >::insert ( GT_Node *  p)
inline

Inserta el nodo p en índice.

Parameters
[in]ppuntero al nodo que se desea guardar en el índice
Exceptions
bad_allocsi no hay suficiente memoria

◆ insert_in_graph() [1/2]

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
GT_Node* Aleph::IndexNode< GT, Compare, Tree, SN >::insert_in_graph ( const GT_Node_Type &  info)
inline

Crea un nuevo nodo con contenido genérico info, lo inserta en el grafo y luego en el índice

Parameters
[in]infoContenido asociado al nuevo nodo.
Returns
puntero al nodo
Exceptions
bad_allocsi no hay suficiente memoria
+ Here is the caller graph for this function:

◆ insert_in_graph() [2/2]

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
GT_Node* Aleph::IndexNode< GT, Compare, Tree, SN >::insert_in_graph ( GT_Node_Type &&  info = GT_Node_Type())
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ remove_from_graph()

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
void Aleph::IndexNode< GT, Compare, Tree, SN >::remove_from_graph ( GT_Node *  p)
inline

Elimina el nodo p del grafo y del ìndice.

Parameters
[in]ppuntero al nodo a eliminar
Exceptions
domain_errorsi el nodo està insertado en el índice (lo que posiblemente signifique que tampoco en el grafo).
+ Here is the caller graph for this function:

◆ search() [1/2]

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
GT_Node* Aleph::IndexNode< GT, Compare, Tree, SN >::search ( GT_Node *  p)
inline

Busca un nodo según el contenido de p.

Tome en cuenta que el criterio de búsqueda está determinado por la clase parámetro de comparación Compare.

Parameters
[in]pel nodo cuya información se desea buscar.
Returns
puntero al nodo si es encontrado o nulo de lo contrario.
+ Here is the caller graph for this function:

◆ search() [2/2]

template<class GT, class Compare = Dft_Node_Cmp<GT>, template< class, class > class Tree = Treap, class SN = Dft_Show_Node<GT>>
GT_Node* Aleph::IndexNode< GT, Compare, Tree, SN >::search ( const GT_Node_Type &  info)
inline

Busca un nodo según la información info.

Tome en cuenta que el criterio de búsqueda está determinado por la clase parámetro de comparación Compare.

Parameters
[in]infoinformación según la cual se desea realizar la búsqueda (la cual depende de la clase parámetro de comparación Compare.
Returns
puntero al nodo si es encontrado o nulo de lo contrario.

The documentation for this class was generated from the following file:

Leandro Rabindranath León