template<typename ValueType, typename SizeType = uint16_t>
class pw::DynamicDeque< ValueType, SizeType >
Double-ended queue, similar to std::deque, but optimized for embedded.
Key features of pw::DynamicDeque.
- Uses a
pw::Allocator for memory operations.
- Provides the
std::deque API, but adds try_* versions of operations that crash on allocation failure.
assign() & try_assign().
push_front() & try_push_front(), push_back() & try_push_back()
emplace_front() & try_emplace_front(), emplace_back() & try_emplace_back()
resize() & try_resize().
- Offers
reserve()/try_reserve(), reserve_exact()/try_reserve_exact(), andshrink_to_fit()` to manage memory usage.
- Never allocates in the constructor.
constexpr constructible.
- Compact representation when used with a
size_type of uint8_t or uint16_t.
- Uses
pw::Allocator::Resize() when possible to maximize efficiency.
|
| constexpr | DynamicDeque (Allocator &allocator) noexcept |
| |
|
| DynamicDeque (const DynamicDeque &)=delete |
| |
|
DynamicDeque & | operator= (const DynamicDeque &)=delete |
| |
| constexpr | DynamicDeque (DynamicDeque &&other) noexcept |
| |
|
DynamicDeque & | operator= (DynamicDeque &&other) noexcept |
| |
|
template<typename InputIt , typename = containers::internal::EnableIfInputIterator<InputIt>> |
| iterator | insert (const_iterator pos, InputIt first, InputIt last) |
| |
|
iterator | insert (const_iterator pos, const value_type &value) |
| |
|
iterator | insert (const_iterator pos, value_type &&value) |
| |
|
iterator | insert (const_iterator pos, size_type count, const value_type &value) |
| |
|
iterator | insert (const_iterator pos, std::initializer_list< value_type > ilist) |
| |
| bool | try_reserve (size_type new_capacity) |
| |
|
void | reserve (size_type new_capacity) |
| | Increases capacity() to at least new_capacity. Crashes on failure.
|
| |
| bool | try_reserve_exact (size_type new_capacity) |
| |
|
void | reserve_exact (size_type new_capacity) |
| | Increases capacity() to exactly new_capacity. Crashes on failure.
|
| |
|
void | shrink_to_fit () |
| | Attempts to reduce capacity() to size(). Not guaranteed to succeed.
|
| |
|
constexpr size_type | max_size () const noexcept |
| |
|
constexpr allocator_type & | get_allocator () const |
| | Returns the deque's allocator.
|
| |
|
void | swap (DynamicDeque &other) noexcept |
| | Swaps the contents of two deques. No allocations occur.
|
| |
| bool | try_assign (size_type count, const value_type &value) |
| |
| template<typename It , int & ..., typename = containers::internal::EnableIfForwardIterator<It>> |
| bool | try_assign (It start, It finish) |
| |
| bool | try_assign (const std::initializer_list< value_type > &list) |
| |
| template<typename... Args> |
| std::optional< iterator > | try_emplace (const_iterator pos, Args &&... args) |
| |
|
template<typename... Args> |
| std::optional< typename GenericDeque< Derived, ValueType, SizeType >::iterator > | try_emplace (const_iterator pos, Args &&... args) |
| |
|
template<typename... Args> |
| bool | try_emplace_back (Args &&... args) |
| |
|
template<typename... Args> |
| bool | try_emplace_front (Args &&... args) |
| |
| std::optional< iterator > | try_insert (const_iterator pos, const value_type &value) |
| |
| std::optional< iterator > | try_insert (const_iterator pos, value_type &&value) |
| |
| std::optional< iterator > | try_insert (const_iterator pos, size_type count, const value_type &value) |
| |
| template<typename ForwardIt , typename = containers::internal::EnableIfForwardIterator<ForwardIt>> |
| std::optional< iterator > | try_insert (const_iterator pos, ForwardIt first, ForwardIt last) |
| |
| std::optional< iterator > | try_insert (const_iterator pos, std::initializer_list< value_type > ilist) |
| |
|
template<typename ForwardIt , typename > |
| std::optional< typename GenericDeque< Derived, ValueType, SizeType >::iterator > | try_insert (const_iterator pos, ForwardIt first, ForwardIt last) |
| |
|
bool | try_push_back (const value_type &value) |
| |
|
bool | try_push_back (value_type &&value) |
| |
|
bool | try_push_front (const value_type &value) |
| |
|
bool | try_push_front (value_type &&value) |
| |
|
bool | try_resize (size_type new_size) |
| |
|
bool | try_resize (size_type new_size, const value_type &value) |
| |