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.reset() to free all memory, including the underlying buffer, and make no further modifications to the container.NullAllocator) before the first allocator goes out of scope.clear() is NOT sufficient; an empty container may still hold a pointer to an allocated buffer.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 | reset () |
| Clears the deque and deallocates its buffer. | |
| void | swap (DynamicVector &other) |