![]() |
Bitcoin Core 30.99.0
P2P Digital Currency
|
Implements a drop-in replacement for std::vector<T> which stores up to N elements directly (without heap allocation). More...
#include <prevector.h>
Classes | |
| class | const_iterator |
| union | direct_or_indirect |
| class | iterator |
Public Types | |
| typedef Size | size_type |
| typedef Diff | difference_type |
| typedef T | value_type |
| typedef value_type & | reference |
| typedef const value_type & | const_reference |
| typedef value_type * | pointer |
| typedef const value_type * | const_pointer |
Public Member Functions | |
| void | assign (size_type n, const T &val) |
| template<std::input_iterator InputIterator> | |
| void | assign (InputIterator first, InputIterator last) |
| prevector ()=default | |
| prevector (size_type n) | |
| prevector (size_type n, const T &val) | |
| template<std::input_iterator InputIterator> | |
| prevector (InputIterator first, InputIterator last) | |
| prevector (const prevector< N, T, Size, Diff > &other) | |
| prevector (prevector< N, T, Size, Diff > &&other) noexcept | |
| prevector & | operator= (const prevector< N, T, Size, Diff > &other) |
| prevector & | operator= (prevector< N, T, Size, Diff > &&other) noexcept |
| size_type | size () const |
| bool | empty () const |
| iterator | begin () |
| const_iterator | begin () const |
| iterator | end () |
| const_iterator | end () const |
| size_t | capacity () const |
| T & | operator[] (size_type pos) |
| const T & | operator[] (size_type pos) const |
| void | resize (size_type new_size) |
| void | reserve (size_type new_capacity) |
| void | shrink_to_fit () |
| void | clear () |
| iterator | insert (iterator pos, const T &value) |
| void | insert (iterator pos, size_type count, const T &value) |
| template<std::input_iterator InputIterator> | |
| void | insert (iterator pos, InputIterator first, InputIterator last) |
| void | resize_uninitialized (size_type new_size) |
| iterator | erase (iterator pos) |
| iterator | erase (iterator first, iterator last) |
| template<typename... Args> | |
| void | emplace_back (Args &&... args) |
| void | push_back (const T &value) |
| void | pop_back () |
| T & | front () |
| const T & | front () const |
| T & | back () |
| const T & | back () const |
| void | swap (prevector< N, T, Size, Diff > &other) noexcept |
| ~prevector () | |
| bool | operator== (const prevector< N, T, Size, Diff > &other) const |
| bool | operator< (const prevector< N, T, Size, Diff > &other) const |
| size_t | allocated_memory () const |
| value_type * | data () |
| const value_type * | data () const |
Static Public Attributes | |
| static constexpr unsigned int | STATIC_SIZE {N} |
Private Member Functions | |
| T * | direct_ptr (difference_type pos) |
| const T * | direct_ptr (difference_type pos) const |
| T * | indirect_ptr (difference_type pos) |
| const T * | indirect_ptr (difference_type pos) const |
| bool | is_direct () const |
| void | change_capacity (size_type new_capacity) |
| T * | item_ptr (difference_type pos) |
| const T * | item_ptr (difference_type pos) const |
| void | fill (T *dst, ptrdiff_t count, const T &value=T{}) |
| template<std::input_iterator InputIterator> | |
| void | fill (T *dst, InputIterator first, InputIterator last) |
Private Attributes | |
| direct_or_indirect | _union = {} |
| size_type | _size = 0 |
Implements a drop-in replacement for std::vector<T> which stores up to N elements directly (without heap allocation).
The types Size and Diff are used to store element counts, and can be any unsigned + signed type.
Storage layout is either:
The data type T must be movable by memmove/realloc(). Once we switch to C++, move constructors can be used instead.
Definition at line 37 of file prevector.h.
| typedef const value_type* prevector< N, T, Size, Diff >::const_pointer |
Definition at line 49 of file prevector.h.
| typedef const value_type& prevector< N, T, Size, Diff >::const_reference |
Definition at line 47 of file prevector.h.
| typedef Diff prevector< N, T, Size, Diff >::difference_type |
Definition at line 44 of file prevector.h.
| typedef value_type* prevector< N, T, Size, Diff >::pointer |
Definition at line 48 of file prevector.h.
| typedef value_type& prevector< N, T, Size, Diff >::reference |
Definition at line 46 of file prevector.h.
| typedef Size prevector< N, T, Size, Diff >::size_type |
Definition at line 43 of file prevector.h.
| typedef T prevector< N, T, Size, Diff >::value_type |
Definition at line 45 of file prevector.h.
|
default |
|
inlineexplicit |
|
inline |
|
inlinenoexcept |
Definition at line 223 of file prevector.h.
|
inline |
Definition at line 469 of file prevector.h.
|
inline |
Definition at line 176 of file prevector.h.
|
inline |
Definition at line 408 of file prevector.h.
|
inline |
Definition at line 255 of file prevector.h.
|
inline |
|
inline |
Definition at line 260 of file prevector.h.
|
inlineprivate |
Definition at line 128 of file prevector.h.
|
inline |
Definition at line 303 of file prevector.h.
|
inline |
Definition at line 477 of file prevector.h.
|
inline |
|
inlineprivate |
|
inlineprivate |
Definition at line 123 of file prevector.h.
|
inline |
Definition at line 383 of file prevector.h.
|
inline |
Definition at line 251 of file prevector.h.
|
inline |
Definition at line 257 of file prevector.h.
|
inline |
|
inline |
Definition at line 364 of file prevector.h.
|
inlineprivate |
Definition at line 167 of file prevector.h.
|
inline |
Definition at line 400 of file prevector.h.
|
inlineprivate |
|
inlineprivate |
Definition at line 125 of file prevector.h.
|
inline |
Definition at line 307 of file prevector.h.
|
inlineprivate |
Definition at line 159 of file prevector.h.
|
inlineprivate |
|
inline |
Definition at line 396 of file prevector.h.
|
inline |
Definition at line 392 of file prevector.h.
|
inline |
Definition at line 293 of file prevector.h.
|
inline |
Definition at line 276 of file prevector.h.
|
inline |
Definition at line 349 of file prevector.h.
|
inline |
Definition at line 299 of file prevector.h.
|
inline |
Definition at line 247 of file prevector.h.
|
private |
Definition at line 117 of file prevector.h.
|
private |
Definition at line 116 of file prevector.h.
|
staticconstexpr |
Definition at line 41 of file prevector.h.