xentara-utils v2.0.4
The Xentara Utility Library
|
A vector that uses a statically allocated buffer for the data. More...
#include <xentara/utils/core/StaticVector.hpp>
Public Types | |
using | value_type = Element |
The element type. | |
using | size_type = std::size_t |
The type used for sizes. | |
using | difference_type = std::ptrdiff_t |
The type used for distances. | |
using | reference = value_type & |
A reference to an element. | |
using | const_reference = const value_type & |
A const reference to an element. | |
using | pointer = value_type * |
A pointer to an element. | |
using | const_pointer = const value_type * |
A const pointer to an element. | |
using | iterator = ContiguousIterator< pointer, StaticVector > |
An iterator. | |
using | const_iterator = ContiguousIterator< const_pointer, StaticVector > |
A const iterator. | |
using | reverse_iterator = std::reverse_iterator< iterator > |
An iterator for iterating in reverse order. | |
using | const_reverse_iterator = std::reverse_iterator< const_iterator > |
A const iterator for iterating in reverse order. | |
Public Member Functions | |
internal constexpr auto | operator= (const StaticVector &rhs) -> StaticVector & |
Assignment operator. | |
constexpr auto | operator= (StaticVector &&rhs) noexcept(std::is_nothrow_move_constructible_v< Element >) -> StaticVector & |
Move-Assignment operator. | |
constexpr auto | operator= (std::initializer_list< Element > values) -> StaticVector & |
Assignment operator for an initializer list. | |
constexpr auto | assign (size_type size, const Element &value) -> void |
Fills the vector with a certain value. | |
template<std::input_iterator InputIterator> | |
constexpr auto | assign (InputIterator first, InputIterator last) -> void |
Copies a range of elements. | |
constexpr auto | assign (std::initializer_list< Element > values) -> void |
Constructor that initializes the elements using an initializer list. | |
constexpr auto | operator== (const StaticVector &rhs) const noexcept -> bool |
Equality operator. | |
constexpr auto | operator<=> (const StaticVector &rhs) const noexcept -> std::compare_three_way_result_t< value_type > |
Three-Way-Comparison operator. | |
Constructors | |
constexpr | StaticVector () noexcept=default |
Default constructor. | |
constexpr | StaticVector (size_type size) |
Constructor that creates a vector of a certain size. | |
constexpr | StaticVector (size_type size, const Element &value) |
Constructor that fills the vector with a certain value. | |
template<std::input_iterator InputIterator> | |
constexpr | StaticVector (InputIterator first, InputIterator last) |
Constructor that copies a range of elements. | |
constexpr | StaticVector (std::initializer_list< Element > values) |
Constructor that initializes the elements using an initializer list. | |
constexpr | StaticVector (const StaticVector &other) |
Copy constructor. | |
constexpr | StaticVector (StaticVector &&other) noexcept(std::is_nothrow_move_constructible_v< Element >) |
Move constructor. | |
Element Access | |
constexpr auto | at (size_type index) const -> const_reference |
Accesses the element at a certain index. | |
constexpr auto | at (size_type index) -> reference |
Accesses the element at a certain index. | |
constexpr auto | operator[] (size_type index) const noexcept -> const_reference |
Subscript operator. | |
constexpr auto | operator[] (size_type index) noexcept -> reference |
Subscript operator. | |
constexpr auto | front () const noexcept -> const_reference |
Returns the first element. | |
constexpr auto | front () noexcept -> reference |
Returns the first element. | |
constexpr auto | back () const noexcept -> const_reference |
Returns the last element. | |
constexpr auto | back () noexcept -> reference |
Returns the last element. | |
constexpr auto | data () const noexcept -> const value_type * |
Raw access to the data. | |
constexpr auto | data () noexcept -> value_type * |
Raw access to the data. | |
Iterators | |
constexpr auto | begin () noexcept -> iterator |
Creates a begin iterator. | |
constexpr auto | begin () const noexcept -> const_iterator |
Creates a begin iterator. | |
constexpr auto | cbegin () const noexcept -> const_iterator |
Creates a begin iterator. | |
constexpr auto | end () noexcept -> iterator |
Creates an end iterator. | |
constexpr auto | end () const noexcept -> const_iterator |
Creates an end iterator. | |
constexpr auto | cend () const noexcept -> const_iterator |
Creates an end iterator. | |
constexpr auto | rbegin () noexcept -> reverse_iterator |
Creates a reverse begin iterator. | |
constexpr auto | rbegin () const noexcept -> const_reverse_iterator |
Creates a reverse begin iterator. | |
constexpr auto | crbegin () const noexcept -> const_reverse_iterator |
Creates a reverse begin iterator. | |
constexpr auto | rend () noexcept -> reverse_iterator |
Creates a reverse end iterator. | |
constexpr auto | rend () const noexcept -> const_reverse_iterator |
Creates a reverse end iterator. | |
constexpr auto | crend () const noexcept -> const_reverse_iterator |
Creates a reverse end iterator. | |
Capacity | |
constexpr auto | empty () const noexcept -> bool |
Determines whether the data is empty. | |
constexpr auto | size () const noexcept -> size_type |
Gets the size of the data. | |
constexpr auto | max_size () const noexcept -> size_type |
Gets the maximum possible data size. | |
constexpr auto | capacity () const noexcept -> size_type |
Gets the capacity of the data. | |
Modifiers | |
constexpr auto | clear () noexcept -> void |
Erases all elements. | |
constexpr auto | insert (const_iterator where, const Element &value) -> iterator |
Inserts an element at a certain position. | |
constexpr auto | insert (const_iterator where, Element &&value) -> iterator |
Move-Inserts an element at a certain position. | |
constexpr auto | insert (const_iterator where, size_type count, const Element &value) -> iterator |
Inserts a number of copies of a element at a certain position. | |
template<std::input_iterator InputIterator> | |
constexpr auto | insert (const_iterator where, InputIterator first, InputIterator last) -> iterator |
Inserts a range of values at a certain position. | |
constexpr auto | insert (const_iterator where, std::initializer_list< Element > values) -> iterator |
Inserts a list of values at a certain position. | |
template<typename... Arguments> | |
constexpr auto | emplace (const_iterator where, Arguments &&... arguments) -> iterator |
Creates an element at a certain position. | |
constexpr auto | erase (const_iterator position) -> iterator |
Removes an element from the vector. | |
constexpr auto | erase (const_iterator first, const_iterator last) -> iterator |
Removes a range of elements from the vector. | |
constexpr auto | push_back (const Element &value) -> void |
Appends an element to the back of the vector. | |
constexpr auto | push_back (Element &&value) -> void |
Move-Appends an element to the back of the vector. | |
template<typename... Arguments> | |
constexpr auto | emplace_back (Arguments &&... arguments) -> reference |
Appends a newly created element to the back of the vector. | |
constexpr auto | pop_back () -> void |
Removes the last element. | |
constexpr auto | resize (size_type newSize) -> void |
Resizes the vector. | |
constexpr auto | resize (size_type newSize, const value_type &fillValue) -> void |
Resizes the vector. | |
constexpr auto | swap (StaticVector &other) noexcept(std::is_nothrow_swappable_v< Element > &&std::is_nothrow_move_constructible_v< Element > &&std::is_nothrow_destructible_v< Element >) -> void |
Swaps the contents of this vector with another vector. | |
A vector that uses a statically allocated buffer for the data.
This class behaves just like std::vector, but doesn't require any heap allocation. Instead, the string data is allocated in a static buffer of a fixed size.
Element | The type for the elements |
kCapacity | The capacity of the vector |
using xentara::utils::core::StaticVector< Element, kCapacity >::const_iterator = ContiguousIterator<const_pointer, StaticVector> |
A const iterator.
using xentara::utils::core::StaticVector< Element, kCapacity >::const_pointer = const value_type * |
A const pointer to an element.
using xentara::utils::core::StaticVector< Element, kCapacity >::const_reference = const value_type & |
A const reference to an element.
using xentara::utils::core::StaticVector< Element, kCapacity >::const_reverse_iterator = std::reverse_iterator<const_iterator> |
A const iterator for iterating in reverse order.
using xentara::utils::core::StaticVector< Element, kCapacity >::difference_type = std::ptrdiff_t |
The type used for distances.
using xentara::utils::core::StaticVector< Element, kCapacity >::iterator = ContiguousIterator<pointer, StaticVector> |
An iterator.
using xentara::utils::core::StaticVector< Element, kCapacity >::pointer = value_type * |
A pointer to an element.
using xentara::utils::core::StaticVector< Element, kCapacity >::reference = value_type & |
A reference to an element.
using xentara::utils::core::StaticVector< Element, kCapacity >::reverse_iterator = std::reverse_iterator<iterator> |
An iterator for iterating in reverse order.
using xentara::utils::core::StaticVector< Element, kCapacity >::size_type = std::size_t |
The type used for sizes.
using xentara::utils::core::StaticVector< Element, kCapacity >::value_type = Element |
The element type.
|
constexprdefaultnoexcept |
Default constructor.
Constructs an empty vector.
|
explicitconstexpr |
Constructor that creates a vector of a certain size.
Creates a vector of the given size and fills it with default-inserted values.
size | The number of entries to create room for |
|
constexpr |
Constructor that fills the vector with a certain value.
Creates a vector of the given size and fills it with the given value.
size | The number of entries to create |
value | The value to set the entries to |
|
constexpr |
Constructor that copies a range of elements.
Creates a vector that holds copies of the given input range.
first | The first element to copy |
last | The position after the last element to copy |
|
constexpr |
Constructor that initializes the elements using an initializer list.
values | The values to initialize the elements to |
|
constexpr |
Copy constructor.
|
constexprnoexcept |
Move constructor.
This constructor moves all the element from other into this vector.
other | The vector from which to move the elements |
|
constexpr |
Copies a range of elements.
Replaces the contents of the vector with a given input range.
first | The first element to copy |
last | The position after the last element to copy |
|
constexpr |
Fills the vector with a certain value.
Resizes the vector to the given size and fills it with the given value.
size | The number of entries to create |
value | The value to set the entries to |
|
constexpr |
Constructor that initializes the elements using an initializer list.
Replaces the contents of the vector with the contents of an initializer list.
values | The initializer list |
|
constexpr |
Accesses the element at a certain index.
index | The index |
std::out_of_range | index is out of range |
|
constexpr |
Accesses the element at a certain index.
index | The index |
std::out_of_range | index is out of range |
|
constexprnoexcept |
Returns the last element.
|
constexprnoexcept |
Returns the last element.
|
constexprnoexcept |
Creates a begin iterator.
|
constexprnoexcept |
Creates a begin iterator.
|
constexprnoexcept |
Gets the capacity of the data.
|
constexprnoexcept |
Creates a begin iterator.
|
constexprnoexcept |
Creates an end iterator.
|
constexprnoexcept |
Erases all elements.
|
constexprnoexcept |
Creates a reverse begin iterator.
|
constexprnoexcept |
Creates a reverse end iterator.
|
constexprnoexcept |
Raw access to the data.
Returns a pointer to the underlying array that serves as element storage.
|
constexprnoexcept |
Raw access to the data.
Returns a pointer to the underlying array that serves as element storage.
|
constexpr |
Creates an element at a certain position.
where | The desired position of the new element. Must be a position within the vector, or cend() to append the element. |
arguments | The arguments to pass to the element's constructor |
|
constexpr |
Appends a newly created element to the back of the vector.
arguments | The arguments to pass to the element's constructor |
|
constexprnoexcept |
Determines whether the data is empty.
|
constexprnoexcept |
Creates an end iterator.
|
constexprnoexcept |
Creates an end iterator.
|
constexpr |
Removes a range of elements from the vector.
first | An iterator to the first element to remove |
last | An iterator one position past the last element to remove |
|
constexpr |
Removes an element from the vector.
position | The position of the element to remove. Must point to a valid element. |
|
constexprnoexcept |
Returns the first element.
|
constexprnoexcept |
Returns the first element.
|
constexpr |
Inserts an element at a certain position.
where | The desired position of the new element. Must be a position within the vector, or cend() to append the element. |
value | The value to insert |
|
constexpr |
Move-Inserts an element at a certain position.
where | The desired position of the new element. Must be a position within the vector, or cend() to append the element. |
value | The value to move |
|
constexpr |
Inserts a range of values at a certain position.
where | The desired position of the first new element. Must be a position within the vector, or cend() to append the elements. |
first | An iterator to the first value to insert |
last | An iterator one position past the last value to insert |
|
constexpr |
Inserts a number of copies of a element at a certain position.
where | The desired position of the first new element. Must be a position within the vector, or cend() to append the elements. |
count | The number of copies to insert |
value | The value to insert |
|
constexpr |
Inserts a list of values at a certain position.
where | The desired position of the first new element. Must be a position within the vector, or cend() to append the elements. |
values | The values to insert |
|
constexprnoexcept |
Gets the maximum possible data size.
|
constexprnoexcept |
Three-Way-Comparison operator.
Performs a lexicographical comparison of the elements of two vectors
|
constexpr |
Assignment operator.
|
constexprnoexcept |
Move-Assignment operator.
Destroys any existing elements and moves all the element from other to this vector.
rhs | The vector from which to move the elements |
|
constexpr |
Assignment operator for an initializer list.
values | The values to assign |
|
constexprnoexcept |
Equality operator.
Tests the contents of two vectors for equality
|
constexprnoexcept |
Subscript operator.
Returns a reference to the element at a certain index
index | The index |
|
constexprnoexcept |
Subscript operator.
Returns a reference to the element at a certain index
index | The index |
|
constexpr |
Removes the last element.
|
constexpr |
Appends an element to the back of the vector.
value | The value to insert |
|
constexpr |
Move-Appends an element to the back of the vector.
value | The value to move |
|
constexprnoexcept |
Creates a reverse begin iterator.
|
constexprnoexcept |
Creates a reverse begin iterator.
|
constexprnoexcept |
Creates a reverse end iterator.
|
constexprnoexcept |
Creates a reverse end iterator.
|
constexpr |
Resizes the vector.
Grows or shrinks the vector to a new size. If the new size is greater than the old size, the new elements are default-inserted.
newSize | The new size for the vector. |
|
constexpr |
Resizes the vector.
Grows or shrinks the vector to a new size. If the new size is greater than the old size, the new elements are filled with copies of fillValue.
newSize | The new size for the vector. |
fillValue | The value that should be used to initialize new element. |
|
constexprnoexcept |
Gets the size of the data.
|
constexprnoexcept |
Swaps the contents of this vector with another vector.
This function will propagate any exception thrown when swapping or transferring the individual elements. It does not have a strong exception guarantee, however: if an exception is thrown, both vectors will remain in a valid but unspecified state.