|
| forward_list () noexcept |
| constructor for an empty list (of T-types elements)
|
|
| ~forward_list () noexcept |
| destructs the list and also calls the destructor of all contained elements
|
|
| forward_list (const forward_list &rhs) noexcept |
| copy constructor list including elements
|
|
| forward_list (forward_list &&rhs) noexcept |
| move constructor list including elements
|
|
forward_list & | operator= (const forward_list &rhs) noexcept |
| copy assignment, each element is copied (added) to the constructed list any existing elements in 'this'/lhs are removed (same behaviour as std::list : Assigns new contents to the container, replacing its current contents, and modifying its size accordingly.)
|
|
forward_list & | operator= (forward_list &&rhs) noexcept |
| move assignment, list is cleared and initialized, elements are moved from source list any existing elements in 'this'/lhs are removed (same behaviour as std::list : Assigns new contents to the container, replacing its current contents, and modifying its size accordingly.)
|
|
iterator | before_begin () noexcept |
| retrieve an interator before first element only allowed for usage in erase_after, insert_after, emplace_after Terminated when content is attemted to read (operator*, operator->)
|
|
const_iterator | before_begin () const noexcept |
| retrieve a const_iterator before first element only allowed for usage in erase_after, insert_after, emplace_after
|
|
const_iterator | cbefore_begin () const noexcept |
| const_iterator an interator before first element only allowed for usage in erase_after, insert_after, emplace_after
|
|
iterator | begin () noexcept |
| default list operation to retrieve an interator to first list element
|
|
const_iterator | begin () const noexcept |
| default list operation to retrieve an const_iterator to first list element
|
|
const_iterator | cbegin () const noexcept |
| default list operation to retrieve an const_iterator to first list element
|
|
iterator | end () noexcept |
| default list operation to retrieve an interator to end of list (behind last valid element) Terminated when content is attemted to read (operator*, operator->)
|
|
const_iterator | end () const noexcept |
| default list operation to retrieve an const_iterator to end of list (behind last valid element) Terminated when content is attemted to read (operator*, operator->)
|
|
const_iterator | cend () const noexcept |
| default list operation to retrieve an const_iterator to end of list (behind last valid element) Terminated when content is attemted to read (operator*, operator->)
|
|
bool | empty () const noexcept |
| list meta information on filling
|
|
bool | full () const noexcept |
| list meta information on filling
|
|
size_type | size () const noexcept |
| list meta information on filling
|
|
size_type | capacity () const noexcept |
| list meta information, maximum number of elements the list can contain
|
|
size_type | max_size () const noexcept |
| list meta information, maximum number of elements the list can contain
|
|
T & | front () noexcept |
| Returns a reference to the first element in the container. calling front() on an empty list will terminate() the processing.
|
|
const T & | front () const noexcept |
| Returns a reference to the first element in the container. calling front() on an empty list will terminate() the processing.
|
|
bool | push_front (const T &data) noexcept |
| add element to the beginning of the list
|
|
bool | push_front (T &&data) noexcept |
| add element to the beginning of the list via move
|
|
bool | pop_front () noexcept |
| remove the first element from the begining of the list element destructor will be invoked
|
|
void | clear () noexcept |
| remove all elements from the list, list will be empty element destructors will be invoked
|
|
iterator | erase_after (const_iterator beforeToBeErasedIter) noexcept |
| remove next element from linked iterator position element destructors will be invoked recursive calls to erase_after only delete each 2nd element
|
|
size_type | remove (const T &data) noexcept |
| remove all elements which matches the given comparing element (compare by value) requires a the template type T to have operator== defined.
|
|
template<typename UnaryPredicate > |
size_type | remove_if (UnaryPredicate pred) noexcept |
| remove all elements which matches the provided comparison function requires a the template type T to have a operator== defined.
|
|
template<typename... ConstructorArgs> |
T & | emplace_front (ConstructorArgs &&... args) noexcept |
| construct element inplace at begining of list
|
|
template<typename... ConstructorArgs> |
iterator | emplace_after (const_iterator afterToBeEmplacedIter, ConstructorArgs &&... args) noexcept |
| construct element inplace after the pointed-to element
|
|
iterator | insert_after (const_iterator citer, const T &data) noexcept |
| insert element after iterator position
|
|
iterator | insert_after (const_iterator citer, T &&data) noexcept |
| add element after the pointed-to element via move
|
|
template<typename T, uint64_t Capacity>
class iox::cxx::forward_list< T, Capacity >
C++11 compatible uni-directional forward list implementation.
Adjustments in the API were done to not use exceptions and serve the requirement of a data structure movable over shared memory. attempt to add elements to a full list will be ignored. Capacity must at least be 1, (unintended) negative initialization is rejected with compile assertion limitation: concurrency concerns have to be handled by client side.
overview of cxx::forward_list deviations to std::forward_list(C++11)
- list declaration with mandatory max list size argument
- member functions don't throw exception but will trigger different failure handling
- push_front returns a bool (instead of void) informing on successful insertion (true)
- pop_front returns a bool (instead of void) informing on successful removal (true), otherwise empty (false)
- emplace_front returns a reference to the inserted element (instead of void), this is C++17-conform
- remove / remove_if returns a the number of removed elements (instead of void), this is C++20-conform
(yet) missing implementations
- allocator, difference_type based operations
- assign, resize, swap, merge, splice_after, reverse, unique, sort
- list operator==, operator!=, operator<, operator<=, operator>, operator>=
- Parameters
-
T | type user data to be managed within list |
Capacity | number of maximum list elements a client can push to the list. minimum value is '1' |