Array-backed list similar to std::vector
, but optimized for embedded.
Key features of pw::DynamicVector
.
pw::Allocator
for memory operations.std::vector
API, but adds try_*
versions of operations that crash on allocation failure.assign()
& try_assign()
.push_back()
& try_push_back()
emplace_back()
& try_emplace_back()
resize()
& try_resize()
.reserve()
/try_reserve()
and shrink_to_fit()
to manage memory usage.constexpr
constructible.size_type
of uint16_t
.pw::Allocator::Resize()
when possible to maximize efficiency.pw::DynamicVector
is currently implemented as a wrapper around pw::DynamicDeque
. Some operations are more expensive than they need to be, and DynamicVector
objects are larger than necessary. This overhead will be eliminated in the future (see b/424613355). Public Types | |
using | value_type = T |
using | size_type = SizeType |
using | reference = value_type & |
using | const_reference = const value_type & |
using | pointer = value_type * |
using | const_pointer = const value_type * |
using | iterator = containers::PtrIterator< DynamicVector > |
using | const_iterator = containers::ConstPtrIterator< DynamicVector > |
using | reverse_iterator = std::reverse_iterator< iterator > |
using | const_reverse_iterator = std::reverse_iterator< const_iterator > |
using | allocator_type = Allocator |
Public Member Functions | |
constexpr | DynamicVector (Allocator &allocator) |
DynamicVector (const DynamicVector &)=delete | |
DynamicVector & | operator= (const DynamicVector &)=delete |
constexpr | DynamicVector (DynamicVector &&)=default |
constexpr DynamicVector & | operator= (DynamicVector &&)=default |
iterator | begin () |
const_iterator | begin () const |
const_iterator | cbegin () const |
iterator | end () |
const_iterator | end () const |
const_iterator | cend () const |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
const_reverse_iterator | crbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
const_reverse_iterator | crend () const |
constexpr allocator_type & | get_allocator () const |
Returns the vector's allocator. | |
bool | empty () const |
Checks if the vector is empty. | |
size_type | size () const |
Returns the number of elements in the vector. | |
size_type | capacity () const |
size_type | max_size () const |
Maximum possible value of size() , ignoring allocator limitations. | |
void | reserve (size_type new_capacity) |
void | reserve_exact (size_type new_capacity) |
bool | try_reserve (size_type new_capacity) |
bool | try_reserve_exact (size_type new_capacity) |
void | shrink_to_fit () |
Reduces memory usage by releasing unused capacity. | |
reference | operator[] (size_type pos) |
const_reference | operator[] (size_type pos) const |
reference | at (size_type pos) |
const_reference | at (size_type pos) const |
reference | front () |
const_reference | front () const |
reference | back () |
const_reference | back () const |
pointer | data () |
const_pointer | data () const |
void | assign (size_type count, const value_type &value) |
bool | try_assign (size_type count, const value_type &value) |
void | assign (std::initializer_list< T > init) |
bool | try_assign (std::initializer_list< T > init) |
void | push_back (const value_type &value) |
void | push_back (value_type &&value) |
bool | try_push_back (const value_type &value) |
bool | try_push_back (value_type &&value) |
void | pop_back () |
template<typename... Args> | |
void | emplace_back (Args &&... args) |
template<typename... Args> | |
bool | try_emplace_back (Args &&... args) |
template<typename... Args> | |
iterator | emplace (const_iterator pos, Args &&... args) |
template<typename... Args> | |
std::optional< iterator > | try_emplace (const_iterator pos, Args &&... args) |
iterator | insert (const_iterator pos, const T &value) |
iterator | insert (const_iterator pos, T &&value) |
iterator | insert (const_iterator pos, size_type count, const T &value) |
template<typename InputIt > | |
iterator | insert (const_iterator pos, InputIt first, InputIt last) |
iterator | insert (const_iterator pos, std::initializer_list< T > ilist) |
std::optional< iterator > | try_insert (const_iterator pos, const T &value) |
std::optional< iterator > | try_insert (const_iterator pos, T &&value) |
std::optional< iterator > | try_insert (const_iterator pos, size_type count, const T &value) |
template<typename InputIt > | |
std::optional< iterator > | try_insert (const_iterator pos, InputIt first, InputIt last) |
std::optional< iterator > | try_insert (const_iterator pos, std::initializer_list< T > ilist) |
iterator | erase (const_iterator pos) |
iterator | erase (const_iterator first, const_iterator last) |
void | resize (size_type count) |
void | resize (size_type count, const value_type &value) |
bool | try_resize (size_type count) |
bool | try_resize (size_type count, const value_type &value) |
void | clear () |
Removes all elements from the vector. | |
void | swap (DynamicVector &other) |