|
template<typename U > |
bool | contains (const U &value, size_t *index=nullptr) const |
| Check if the current array contains a given value. More...
|
|
template<typename Lambda > |
bool | find (Lambda &&lambda, size_t *index=nullptr) const |
| Finds the first item in array matching criteria given by the lambda. More...
|
|
template<typename Lambda > |
bool | removeAll (Lambda &&criteria) |
| Removes all items matching criteria given by Lambda. More...
|
|
template<typename U > |
bool | remove (const U &value) |
| Removes all values equal to value More...
|
|
| Segment (Segment &&other) |
|
| Segment (const Segment &other) |
|
| Segment (Span< const U > span) |
|
| Segment (Span< const T > span) |
|
| Segment (std::initializer_list< T > list) |
|
| Segment (SegmentHeader &inlineHeader, uint32_t capacityInBytes) |
| Builds a Segment with an inlineHeader of given capacity in bytes. More...
|
|
Segment & | operator= (Segment &&other) |
|
Segment & | operator= (const Segment &other) |
|
bool | resizeWithoutInitializing (size_t newSize) |
| Re-allocates to the requested new size, preserving its contents. More...
|
|
bool | resize (size_t newSize, const T &value=T()) |
| Re-allocates to the requested new size, preserving its contents and setting new items to value. More...
|
|
bool | reserve (size_t newCapacity) |
| Reserves capacity to avoid heap-allocation during a future append, assign or resize. More...
|
|
bool | append (Span< const T > span) |
| Appends a Span to the end of the segment. More...
|
|
bool | append (Span< const U > span) |
| Appends a Span of items convertible to T to the end of the segment. More...
|
|
bool | appendMove (Segment &&other) |
| Moves contents of another segment to the end of this segment. More...
|
|
bool | shrink_to_fit () |
| Ensures capacity == size re-allocating (if capacity>size ) or freeing ( if size==0 ) memory. More...
|
|
void | clear () |
| Sets size to zero without freeing any memory (use shrink_to_fit() to free memory) More...
|
|
bool | assign (Span< const T > span) |
| Replaces contents with contents of the span. More...
|
|
bool | assignMove (Segment &&other) |
| Replaces content moving (possibly "stealing") content of another segment. More...
|
|
bool | push_back (const T &value) |
| Appends a single element to the end of the segment. More...
|
|
bool | push_back (T &&value) |
| Moves a single element to the end of the segment. More...
|
|
bool | push_front (const T &value) |
| Appends a single element to the start of the segment. More...
|
|
bool | pop_back (T *removedValue=nullptr) |
| Removes the last element of the segment. More...
|
|
bool | pop_front (T *removedValue=nullptr) |
| Removes the first element of the segment. More...
|
|
const T * | data () const SC_LANGUAGE_LIFETIME_BOUND |
| Access data owned by the segment or nullptr if segment is empty. More...
|
|
T * | data () SC_LANGUAGE_LIFETIME_BOUND |
| Access data owned by the segment or nullptr if segment is empty. More...
|
|
T * | begin () SC_LANGUAGE_LIFETIME_BOUND |
|
const T * | begin () const SC_LANGUAGE_LIFETIME_BOUND |
|
T * | end () SC_LANGUAGE_LIFETIME_BOUND |
|
const T * | end () const SC_LANGUAGE_LIFETIME_BOUND |
|
T & | back () SC_LANGUAGE_LIFETIME_BOUND |
|
const T & | back () const SC_LANGUAGE_LIFETIME_BOUND |
|
T & | front () SC_LANGUAGE_LIFETIME_BOUND |
|
const T & | front () const SC_LANGUAGE_LIFETIME_BOUND |
|
T & | operator[] (size_t idx) SC_LANGUAGE_LIFETIME_BOUND |
|
const T & | operator[] (size_t idx) const SC_LANGUAGE_LIFETIME_BOUND |
|
bool | isInlineBuffer () const |
| Returns true if an inline buffer is in use (false if segment is heap allocated). More...
|
|
bool | isEmpty () const |
| Check if is empty (size() == 0) More...
|
|
Span< T > | toSpan () SC_LANGUAGE_LIFETIME_BOUND |
| Obtains a Span of internal contents. More...
|
|
Span< const T > | toSpanConst () const SC_LANGUAGE_LIFETIME_BOUND |
| Obtains a Span of internal contents. More...
|
|
size_t | size () const |
| Returns current size. More...
|
|
size_t | capacity () |
| Returns current capacity (always >= of size() ) More...
|
|
bool | removeRange (size_t start, size_t length) |
| Removes the range [start, start + length] from the segment. More...
|
|
bool | removeAt (size_t index) |
| Removes the element at index. More...
|
|
bool | insert (size_t index, Span< const T > data) |
| Insert a span at the given index. More...
|
|
void | unsafeSetHeader (SegmentHeader *newHeader) |
| Sets the internal header handled by this class. More...
|
|
SegmentHeader * | unsafeGetHeader () const |
| Get the internal header handled by this class. More...
|
|
template<typename T>
struct SC::Vector< T >
A contiguous sequence of heap allocated elements.
- Template Parameters
-
T | Type of single vector element |
All methods of SC::Vector that can fail, return a [[nodiscard]]
bool
(example SC::Vector::push_back).
Assignment and Copy / move construct operators will just assert as they can't return a failure code.
memcpy
is used to optimize copies when T
is a memcpy-able object.
- Note
- Use SC::SmallVector everywhere a SC::Vector reference is needed if the upper bound size of required elements is known to get rid of unnecessary heap allocations.