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 Node_Pool< Node >

#include <tpl_nodePool.H>

Métodos públicos

 Node_Pool (size_t __n=100)
 
Node * allocate ()
 
Node * allocate (const typename Node::key_type &key)
 
Node * allocate (typename Node::key_type &&key)
 
void deallocate (Node *p)
 

Descripción detallada

template<class Node>
class Node_Pool< Node >

Conjunto de nodos a reusarse.

La clase Node_Pool se destina como un buffer de nodos de algún tipo de dato (listas, árboles, etc) disponibles para rápido uso evitando llamadas a los operadores new y delete.

La clase maneja un parámetro n que representa la máxima cantidad de nodos de reserva.

Autor
Leandro Rabindranath León

Documentación de las funciones miembro

template<class Node>
Node* Node_Pool< Node >::allocate ( )
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

Referenciado por Node_Pool< Knode >::allocate() y Aleph::multimap< Key, T, Compare, KTree, TTree >::insert().

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

template<class Node>
Node* Node_Pool< Node >::allocate ( const typename Node::key_type &  key)
inline

Aparta memoria para un nodo y le asigna un valor de clave de tipo Key.

allocate_node() revisa si hay un nodo ya previamente apartado entre los n posibles. Si tal es el caso, entonces se escoge un nodo entre los existentes del conjunto. De lo contrario, se reserva memoria para un nuevo nodo mediante new. En ambos casos la clave key es asignada al resultado que dé get_key() invocada sobre el nodo.

Parámetros
[in]keyclave a asignar al nodo.
Excepciones
bad_allocsi no hay suficiente memoria.
template<class Node>
void Node_Pool< Node >::deallocate ( Node *  p)
inline

Libera el nodo p.

deallocate_node(p) entrega el nodo p para eventual posterior reutilización.

Cada vez que se libera un nodo por este método, se guarda en un conjunto para posterior reutilización de hasta un mácimo de n nodos. Si el conjunto no está lleno, entonces el nodo puede ser reutilizado. De lo contrario, si el conjunto está lleno, entonces el nodo es liberado mediante delete.

Nota
Tenga muy en cuenta que en caso de que el nodo se guarde para uso posterior no se llama al destructor. Por tanto, es muy importante que p refiera a un nodo recién apartado.
Parámetros
[in]pel nodo a liberar.

Referenciado por Aleph::multimap< Key, T, Compare, KTree, TTree >::insert().

+ 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