#include <tpl_nodePool.H>
Public Member Functions | |
| Node_Pool (size_t __n=100) noexcept | |
| Node * | allocate () |
| Node * | allocate (const typename Node::key_type &key) |
| Node * | allocate (typename Node::key_type &&key) |
| void | deallocate (Node *p) noexcept |
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.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Here is the call graph for this function:
Here is the caller graph for this function:
|
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.
| [in] | key | clave a asignar al nodo. |
| bad_alloc | si no hay suficiente memoria. |
Here is the call graph for this function:
|
inlinenoexcept |
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.
| [in] | p | el nodo a liberar. |
Here is the call graph for this function:
Here is the caller graph for this function: