[#bsl-vector-086]
= xref:bsl.adoc[bsl]::xref:bsl/vector-00d.adoc[vector]&lt;VALUE&lowbar;TYPE*, ALLOCATOR&gt;
:relfileprefix: ../
:mrdocs:

This partial specialization of `vector` for pointer types to a (template parameter) `VALUE&lowbar;TYPE` type is implemented in terms of `vector&lt;UintPtr&gt;` to reduce&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class VALUE&lowbar;TYPE,
    class ALLOCATOR&gt;
class xref:bsl/vector-00d.adoc[vector]&lt;VALUE&lowbar;TYPE*, ALLOCATOR&gt;;
----

== Description

This partial specialization of `vector` for pointer types to a (template parameter) `VALUE&lowbar;TYPE` type is implemented in terms of `vector&lt;UintPtr&gt;` to reduce the amount of code generated&period; Note that this specialization rebinds the (template parameter) `ALLOCATOR` type to an allocator of `UintPtr` so as to satisfy the invariant in the `vector` base class&period; Note that the contract for all members is the same as the primary template, so documentation is not repeated to avoid accidentally introducing inconsistency over time&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:bsl/vector-086/allocator_type.adoc[`allocator&lowbar;type`] 
| This `typedef` is an alias to the (template parameter) `ALLOCATOR`&period;
| xref:bsl/vector-086/const_iterator.adoc[`const&lowbar;iterator`] 
| This `typedef` is an alias to `VALUE&lowbar;TYPE &ast;const &ast;`&period;
| xref:bsl/vector-086/const_pointer.adoc[`const&lowbar;pointer`] 
| This `typedef` is an alias to `AllocatorTraits&colon;&colon;const&lowbar;pointer`&period;
| xref:bsl/vector-086/const_reference.adoc[`const&lowbar;reference`] 
| This `typedef` is an alias to `const value&lowbar;type&amp;`&period;
| xref:bsl/vector-086/const_reverse_iterator.adoc[`const&lowbar;reverse&lowbar;iterator`] 
| This `typedef` is an alias to `bsl&colon;&colon;reverse&lowbar;iterator&lt;const&lowbar;iterator&gt;`&period;
| xref:bsl/vector-086/difference_type.adoc[`difference&lowbar;type`] 
| This `typedef` is an alias to `std&colon;&colon;ptrdiff&lowbar;t`&period;
| xref:bsl/vector-086/iterator.adoc[`iterator`] 
| This `typedef` is an alias to `VALUE&lowbar;TYPE &ast;&ast;`&period;
| xref:bsl/vector-086/pointer.adoc[`pointer`] 
| This `typedef` is an alias to `AllocatorTraits&colon;&colon;pointer`&period;
| xref:bsl/vector-086/reference.adoc[`reference`] 
| This `typedef` is an alias to `value&lowbar;type&amp;`&period;
| xref:bsl/vector-086/reverse_iterator.adoc[`reverse&lowbar;iterator`] 
| This `typedef` is an alias to `bsl&colon;&colon;reverse&lowbar;iterator&lt;iterator&gt;`&period;
| xref:bsl/vector-086/size_type.adoc[`size&lowbar;type`] 
| This `typedef` is an alias to `std&colon;&colon;size&lowbar;t`&period;
| xref:bsl/vector-086/value_type.adoc[`value&lowbar;type`] 
| This `typedef` is an alias to `VALUE&lowbar;TYPE &ast;`&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:bsl/vector-086/2constructor-052.adoc[`vector`]         [.small]#[constructor]#
| Create a `vector` object&period;
| xref:bsl/vector-086/2destructor.adoc[`&#126;vector`] [.small]#[destructor]#
| Destroy this vector and all of its elements&period;
| xref:bsl/vector-086/operator_assign-0ba.adoc[`operator&equals;`] 
| Assignment operators
| xref:bsl/vector-086/append_range.adoc[`append&lowbar;range`] 
| Append elements from a range to this vector&period;
| xref:bsl/vector-086/assign-0f.adoc[`assign`] 
| Assign a new value to this vector&period;
| xref:bsl/vector-086/assign_range.adoc[`assign&lowbar;range`] 
| Assign elements from a range to this vector&period;
| xref:bsl/vector-086/at-0f.adoc[`at`] 
| Return a reference to the element at the specified position&period;
| xref:bsl/vector-086/back-0b.adoc[`back`] 
| Return a reference to the last element of this vector&period;
| xref:bsl/vector-086/begin-03.adoc[`begin`] 
| `begin` overloads
| xref:bsl/vector-086/capacity.adoc[`capacity`] 
| Return the capacity of this vector&period;
| xref:bsl/vector-086/cbegin.adoc[`cbegin`] 
| Return a const iterator to the first element of this vector&period;
| xref:bsl/vector-086/cend.adoc[`cend`] 
| Return a const past&hyphen;the&hyphen;end iterator for this vector&period;
| xref:bsl/vector-086/clear.adoc[`clear`] 
| Remove all elements from this vector&period;
| xref:bsl/vector-086/crbegin.adoc[`crbegin`] 
| Return a const reverse iterator to the last element&period;
| xref:bsl/vector-086/crend.adoc[`crend`] 
| Return a const past&hyphen;the&hyphen;end reverse iterator&period;
| xref:bsl/vector-086/data-00.adoc[`data`] 
| Return a pointer to the contiguous element storage&period;
| xref:bsl/vector-086/emplace-0b.adoc[`emplace`] 
| Emplace a newly constructed element at the specified position&period;
| xref:bsl/vector-086/emplace_back-02.adoc[`emplace&lowbar;back`] 
| Emplace a newly constructed element at the end&period;
| xref:bsl/vector-086/empty.adoc[`empty`] 
| Return whether this vector contains no elements&period;
| xref:bsl/vector-086/end-03.adoc[`end`] 
| `end` overloads
| xref:bsl/vector-086/erase-00.adoc[`erase`] 
| Erase elements from this vector&period;
| xref:bsl/vector-086/front-0f.adoc[`front`] 
| Return a reference to the first element of this vector&period;
| xref:bsl/vector-086/get_allocator.adoc[`get&lowbar;allocator`] 
| Return a copy of the allocator used by this vector&period;
| xref:bsl/vector-086/insert-02.adoc[`insert`] 
| Insert elements into this vector&period;
| xref:bsl/vector-086/insert_range.adoc[`insert&lowbar;range`] 
| Insert elements from a range into this vector&period;
| xref:bsl/vector-086/max_size.adoc[`max&lowbar;size`] 
| Return a theoretical upper bound on this vector&apos;s size&period;
| xref:bsl/vector-086/operator_subs-0b.adoc[`operator&lsqb;&rsqb;`] 
| Return a reference to the element at the specified position&period;
| xref:bsl/vector-086/pop_back.adoc[`pop&lowbar;back`] 
| Remove the last element of this vector&period;
| xref:bsl/vector-086/push_back.adoc[`push&lowbar;back`] 
| Append an element to the end of this vector&period;
| xref:bsl/vector-086/rbegin-04.adoc[`rbegin`] 
| `rbegin` overloads
| xref:bsl/vector-086/rend-0f.adoc[`rend`] 
| `rend` overloads
| xref:bsl/vector-086/reserve.adoc[`reserve`] 
| Request that the capacity be at least the specified value&period;
| xref:bsl/vector-086/resize-0f.adoc[`resize`] 
| Change the size of this vector&period;
| xref:bsl/vector-086/shrink_to_fit.adoc[`shrink&lowbar;to&lowbar;fit`] 
| Request that unused capacity be released&period;
| xref:bsl/vector-086/size.adoc[`size`] 
| Return the number of elements in this vector&period;
| xref:bsl/vector-086/swap.adoc[`swap`] 
| Exchange the contents of this vector with those of the specified `other`&period;
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:bsl/swap-05ca.adoc[bsl::swap]`
| Exchange the values of the specified `a` and `b` objects&period;
| `xref:bsl/operator_3way-037.adoc[bsl::operator&lt;&equals;&gt;]`
| Perform a three&hyphen;way comparison of the specified `lhs` and `rhs` vectors and return the result of that comparison&period;
| `xref:bsl/operator_eq-04a.adoc[bsl::operator&equals;&equals;]`
| Return `true` if the specified `lhs` and `rhs` vectors have the same value, and `false` otherwise&period;
|===


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