[#BloombergLP-bdlc-PackedIntArray-0b]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlc.adoc[bdlc]::PackedIntArray
:relfileprefix: ../../
:mrdocs:

This space&hyphen;efficient value&hyphen;semantic array class represents a sequence of `TYPE` elements&semi; `TYPE` must be convertible to either a signed or unsigned 64&hyphen;bit integer using `static&lowbar;cast`&period; The interface provides functionality similar to a `vector&lt;int&gt;` however references to individual elements are not provided&period; This class provides accessors that return iterators that provide non&hyphen;modifiable access to its elements&period; The returned iterators, unlike those returned by a `vector&lt;int&gt;` are _not_ invalidated upon reallocation&period;

== Synopsis

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

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

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/PackedIntArray-0b/const_iterator.adoc[`const&lowbar;iterator`] 
| Constant iterator type for this packed array&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/value_type.adoc[`value&lowbar;type`] 
| Element value type for this packed array&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/PackedIntArray-0b/2constructor-02.adoc[`PackedIntArray`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlc/PackedIntArray-0b/2destructor.adoc[`&#126;PackedIntArray`] [.small]#[destructor]#
| Destroy this object
| xref:BloombergLP/bdlc/PackedIntArray-0b/operator_assign.adoc[`operator&equals;`] 
| Assign to this array the value of the specified `rhs` array, and return a reference providing modifiable access to this array&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/allocator.adoc[`allocator`] 
| Return the allocator used by this array to supply memory&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/append-0c.adoc[`append`] 
| `append` overloads
| xref:BloombergLP/bdlc/PackedIntArray-0b/back.adoc[`back`] 
| Return the value of the element at the back of this array&period; The behavior is undefined unless `0 &lt; length()`&period; Note that this function is logically equivalent to&colon; &grave; operator &hyphen; 1) &grave;
| xref:BloombergLP/bdlc/PackedIntArray-0b/bdexStreamIn.adoc[`bdexStreamIn`] 
| Assign to this object the value read from the specified input `stream` using the specified `version` format, and return a reference to `stream`&period; If `stream` is initially invalid, this operation has no effect&period; If `version` is not supported, this object is unaltered and `stream` is invalidated but otherwise unmodified&period; If `version` is supported but `stream` becomes invalid during this operation, this object has an undefined, but valid, state&period; Note that no version is read from `stream`&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/bdexStreamOut.adoc[`bdexStreamOut`] 
| Write this value to the specified output `stream` using the specified `version` format, and return a reference to `stream`&period; If `stream` is initially invalid, this operation has no effect&period; If `version` is not supported, `stream` is invalidated but otherwise unmodified&period; Note that `version` is not written to `stream`&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/begin.adoc[`begin`] 
| Return an iterator referring to the first element in this array (or the past&hyphen;the&hyphen;end iterator if this array is empty)&period; This reference remains valid as long as this array exists&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/bytesPerElement.adoc[`bytesPerElement`] 
| Return the number of bytes currently used to store each element in this array&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/capacity.adoc[`capacity`] 
| Return the number of elements this array can hold in terms of the current data type used to store its elements&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/end.adoc[`end`] 
| Return an iterator referring to one element beyond the last element in this array&period; This reference remains valid as long as this array exists, and length does not decrease&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/front.adoc[`front`] 
| Return the value of the element at the front of this array&period; The behavior is undefined unless `0 &lt; length()`&period; Note that this function is logically equivalent to&colon; &grave; operator &grave;
| xref:BloombergLP/bdlc/PackedIntArray-0b/insert-0ae.adoc[`insert`] 
| `insert` overloads
| xref:BloombergLP/bdlc/PackedIntArray-0b/isEmpty.adoc[`isEmpty`] 
| Return `true` if there are no elements in this array, and `false` otherwise&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/isEqual.adoc[`isEqual`] 
| Return `true` if this and the specified `other` array have the same value, and `false` otherwise&period; Two `PackedIntArray` arrays have the same value if they have the same length, and all corresponding elements (those at the same indices) have the same value&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/length.adoc[`length`] 
| Return number of elements in this array&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/operator_subs.adoc[`operator&lsqb;&rsqb;`] 
| Return the value of the element at the specified `index`&period; The behavior is undefined unless `index &lt; length()`&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/pop_back.adoc[`pop&lowbar;back`] 
| Remove the last element from this array&period; The behavior is undefined unless `0 &lt; length()` &period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/print.adoc[`print`] 
| Write the value of this array to the specified output `stream` in a human&hyphen;readable format, and return a reference to `stream`&period; Optionally specify an initial indentation `level`, whose absolute value is incremented recursively for nested arrays&period; If `level` is specified, optionally specify `spacesPerLevel`, whose absolute value indicates the number of spaces per indentation level for this and all of its nested arrays&period; If `level` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`)&period; If `stream` is not valid on entry, this operation has no effect&period; Note that the format is not fully specified, and can change without notice&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/push_back.adoc[`push&lowbar;back`] 
| Append an element having the specified `value` to the end of this array&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/remove-02.adoc[`remove`] 
| `remove` overloads
| xref:BloombergLP/bdlc/PackedIntArray-0b/removeAll.adoc[`removeAll`] 
| Remove all the elements from this array and set the storage required per element to one byte&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/replace-05.adoc[`replace`] 
| `replace` overloads
| xref:BloombergLP/bdlc/PackedIntArray-0b/reserveCapacity-03.adoc[`reserveCapacity`] 
| `reserveCapacity` overloads
| xref:BloombergLP/bdlc/PackedIntArray-0b/resize.adoc[`resize`] 
| Set the length of this array to the specified `numElements`&period; If `numElements &gt; length()`, the added elements are initialized to 0&period;
| xref:BloombergLP/bdlc/PackedIntArray-0b/swap.adoc[`swap`] 
| Efficiently exchange the value of this array with the value of the specified `other` array&period; This method provides the no&hyphen;throw exception&hyphen;safety guarantee&period; The behavior is undefined unless this array was created with the same allocator as `other`&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/PackedIntArray-0b/maxSupportedBdexVersion.adoc[`maxSupportedBdexVersion`] 
| Return the `version` to be used with the `bdexStreamOut` method corresponding to the specified `serializationVersion`&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;
|===


== Specializations

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/PackedIntArray-08.adoc[`PackedIntArray&lt;int&gt;`] 
| This space&hyphen;efficient value&hyphen;semantic array class represents a sequence of `TYPE` elements&semi; `TYPE` must be convertible to either a signed or unsigned 64&hyphen;bit integer using `static&lowbar;cast`&period; The interface provides functionality similar to a `vector&lt;int&gt;` however references to individual elements are not provided&period; This class provides accessors that return iterators that provide non&hyphen;modifiable access to its elements&period; The returned iterators, unlike those returned by a `vector&lt;int&gt;` are _not_ invalidated upon reallocation&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlc/operator_not_eq-07.adoc[`operator!&equals;`]
| Return `true` if the specified `lhs` and `rhs` arrays do not have the same value, and `false` otherwise&period; Two `PackedIntArray` arrays do not have the same value if they do not have the same length, or if any corresponding elements (those at the same indices) do not have the same value&period;
| xref:BloombergLP/bdlc/operator_eq-080.adoc[`operator&equals;&equals;`]
| Return `true` if the specified `lhs` and `rhs` arrays have the same value, and `false` otherwise&period; Two `PackedIntArray` arrays have the same value if they have the same length, and all corresponding elements (those at the same indices) have the same value&period;
| xref:BloombergLP/bdlc/swap-01.adoc[`swap`]
| Exchange the values of the specified `a` and `b` objects&period;
|===


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