[#BloombergLP-bslstl-BidirectionalNodePool]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::BidirectionalNodePool
:relfileprefix: ../../
:mrdocs:

This class provides methods for creating and destroying nodes using the appropriate allocator&hyphen;traits of the (template parameter) type `ALLOCATOR`&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;bidirectionalnodepool&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class VALUE,
    class ALLOCATOR&gt;
class BidirectionalNodePool;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/BidirectionalNodePool/AllocatorType.adoc[`AllocatorType`] 
| Alias for the allocator type defined by `SimplePool`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/size_type.adoc[`size&lowbar;type`] 
| Alias for the `size&lowbar;type` of the allocator defined by `SimplePool`&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/BidirectionalNodePool/2constructor-07.adoc[`BidirectionalNodePool`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bslstl/BidirectionalNodePool/adopt.adoc[`adopt`] 
| Adopt all outstanding allocations from the specified `pool`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/allocator-01.adoc[`allocator`] 
| `allocator` overloads
| xref:BloombergLP/bslstl/BidirectionalNodePool/cloneNode.adoc[`cloneNode`] 
| Allocate a node and copy&hyphen;construct its `VALUE` from `original`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/deleteNode.adoc[`deleteNode`] 
| Destroy `linkNode` and return its memory to this pool&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/emplaceIntoNewNode.adoc[`emplaceIntoNewNode`] 
| Allocate a node and construct its `VALUE` from `arguments`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/moveIntoNewNode.adoc[`moveIntoNewNode`] 
| Allocate a node and move&hyphen;construct its `VALUE` from `original`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/release.adoc[`release`] 
| Relinquish all memory currently allocated with the memory pool maintained by this object&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/reserveNodes.adoc[`reserveNodes`] 
| Reserve memory for at least the specified `numNodes`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/swapExchangeAllocators.adoc[`swapExchangeAllocators`] 
| Exchange this pool&apos;s nodes and allocator with those of `other`&period;
| xref:BloombergLP/bslstl/BidirectionalNodePool/swapRetainAllocators.adoc[`swapRetainAllocators`] 
| Exchange this pool&apos;s nodes with those of `other`&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/swap-0ee.adoc[`swap`]
| Exchange the nodes of the specified `a` and `b` objects&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
