[#BloombergLP-bdlc-Queue]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlc.adoc[bdlc]::Queue
:relfileprefix: ../../
:mrdocs:

Efficient, in&hyphen;place double&hyphen;ended queue of values of type `T`&period;

== Synopsis

Declared in `&lt;bdlc&lowbar;queue&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class T&gt;
class Queue;
----

== Description

This class implements an efficient, in&hyphen;place double&hyphen;ended queue of values of parameterized type `T`&period; The physical capacity of this queue may grow, but never shrinks&period; Capacity may be reserved initially via a constructor, or at any time thereafter by using the `reserveCapacity` and `reserveCapacityRaw` methods&period; Note that there is no guarantee of contiguous storage of consecutive elements&period;

More generally, this container class supports a complete set of &ast;value semantics&ast; operations, including copy construction, assignment, equality comparison, `ostream` printing, and `bdex` serialization&period; (A precise operational definition of when two objects have the same value can be found in the description of `operator&equals;&equals;` for the class&period;) This container is _exception neutral_ with no guarantee of rollback&colon; if an exception is thrown during the invocation of a method on a pre&hyphen;existing object, the container is left in a valid state, but its value is undefined&period; In no event is memory leaked&period; Finally, _aliasing_ (e&period;g&period;, using all or part of an object as both source and destination) is supported in all cases&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/Queue/InitialCapacity.adoc[`InitialCapacity`] 
| Specifier for the initial internal capacity of a `Queue`&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/Queue/2constructor-0d.adoc[`Queue`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlc/Queue/2destructor.adoc[`&#126;Queue`] [.small]#[destructor]#
| Destroy this object&period;
| xref:BloombergLP/bdlc/Queue/operator_assign.adoc[`operator&equals;`] 
| Assign to this queue the value of the specified `rhs` queue&period;
| xref:BloombergLP/bdlc/Queue/append-0b.adoc[`append`] 
| `append` overloads
| xref:BloombergLP/bdlc/Queue/back-07.adoc[`back`] 
| `back` overloads
| xref:BloombergLP/bdlc/Queue/bdexStreamIn.adoc[`bdexStreamIn`] 
| Assign to this object the value read from the specified `stream`&period;
| xref:BloombergLP/bdlc/Queue/bdexStreamOut.adoc[`bdexStreamOut`] 
| Write this object to the specified output `stream`&period;
| xref:BloombergLP/bdlc/Queue/front-06.adoc[`front`] 
| `front` overloads
| xref:BloombergLP/bdlc/Queue/insert-0f.adoc[`insert`] 
| `insert` overloads
| xref:BloombergLP/bdlc/Queue/length.adoc[`length`] 
| Return the number of elements in this queue&period;
| xref:BloombergLP/bdlc/Queue/operator_subs-02.adoc[`operator&lsqb;&rsqb;`] 
| Subscript operators
| xref:BloombergLP/bdlc/Queue/popBack.adoc[`popBack`] 
| Remove the value from the back of this queue&period;
| xref:BloombergLP/bdlc/Queue/popFront.adoc[`popFront`] 
| Remove the value from the front of this queue&period;
| xref:BloombergLP/bdlc/Queue/print.adoc[`print`] 
| Format this object to the specified output `stream`&period;
| xref:BloombergLP/bdlc/Queue/pushBack.adoc[`pushBack`] 
| Append the specified `item` to the back of this queue&period;
| xref:BloombergLP/bdlc/Queue/pushFront.adoc[`pushFront`] 
| Insert the specified `item` into the front of this queue&period;
| xref:BloombergLP/bdlc/Queue/remove-0f.adoc[`remove`] 
| `remove` overloads
| xref:BloombergLP/bdlc/Queue/removeAll.adoc[`removeAll`] 
| Remove all elements from this queue&period;
| xref:BloombergLP/bdlc/Queue/replace-0d.adoc[`replace`] 
| `replace` overloads
| xref:BloombergLP/bdlc/Queue/reserveCapacity.adoc[`reserveCapacity`] 
| Reserve capacity for at least the specified `numElements` values&period;
| xref:BloombergLP/bdlc/Queue/reserveCapacityRaw.adoc[`reserveCapacityRaw`] 
| Reserve minimal capacity for the specified `numElements` values&period;
| xref:BloombergLP/bdlc/Queue/setLength-0b0.adoc[`setLength`] 
| `setLength` overloads
| xref:BloombergLP/bdlc/Queue/setLengthRaw.adoc[`setLengthRaw`] 
| Set the length of this queue without initializing new elements&period;
| xref:BloombergLP/bdlc/Queue/streamOut.adoc[`streamOut`] 
| Write the elements of this queue to the specified `stream`&period;
| xref:BloombergLP/bdlc/Queue/swap.adoc[`swap`] 
| Swap the values at the specified indices `index1` and `index2`&period;
| xref:BloombergLP/bdlc/Queue/2conversion-0c.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;Queue, HasPrintMethod&gt;`] 
| Declare that this type has a `print` method&period;
| xref:BloombergLP/bdlc/Queue/2conversion-04.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;Queue, UsesBslmaAllocator&gt;`] 
| Declare that this type uses a `bslma` allocator&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/Queue/maxSupportedBdexVersion-04.adoc[`maxSupportedBdexVersion`] 
| `maxSupportedBdexVersion` overloads
| xref:BloombergLP/bdlc/Queue/maxSupportedVersion.adoc[`maxSupportedVersion`] 
| Return the most current `bdex` streaming version supported by this class&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/operator_not_eq-0f.adoc[`operator!&equals;`]
| Return whether the specified queues do not have the same value&period;
| xref:BloombergLP/bdlc/operator_eq-0b.adoc[`operator&equals;&equals;`]
| Return whether the specified queues have the same value&period;
|===


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