![]() |
Bitcoin Core 31.0.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 |
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.
Definition at line 49 of file prevector.h.
Definition at line 47 of file prevector.h.
Definition at line 44 of file prevector.h.
Definition at line 48 of file prevector.h.
Definition at line 46 of file prevector.h.
|
default |
|
inline |
Definition at line 223 of file prevector.h.
Definition at line 469 of file prevector.h.
|
inline |
Definition at line 176 of file prevector.h.
Definition at line 408 of file prevector.h.
Definition at line 255 of file prevector.h.
|
inline |
Definition at line 260 of file prevector.h.
Definition at line 128 of file prevector.h.
Definition at line 303 of file prevector.h.
|
inline |
Definition at line 477 of file prevector.h.
|
inline |
Definition at line 123 of file prevector.h.
|
inline |
Definition at line 383 of file prevector.h.
Definition at line 251 of file prevector.h.
Definition at line 257 of file prevector.h.
|
inline |
Definition at line 364 of file prevector.h.
|
inlineprivate |
Definition at line 125 of file prevector.h.
Definition at line 307 of file prevector.h.
|
inline |
Definition at line 126 of file prevector.h.
Definition at line 159 of file prevector.h.
Definition at line 396 of file prevector.h.
Definition at line 392 of file prevector.h.
Definition at line 293 of file prevector.h.
Definition at line 276 of file prevector.h.
Definition at line 349 of file prevector.h.
Definition at line 299 of file prevector.h.
Definition at line 247 of file prevector.h.
Definition at line 117 of file prevector.h.
|
private |
Definition at line 116 of file prevector.h.
Definition at line 41 of file prevector.h.