|
constexpr | static_vector ()=default |
|
template<etl::size_t Size>
requires (Size <= Capacity) |
constexpr | static_vector (c_array< T, Size > &&source) |
|
template<typename InputIter>
requires (detail::InputIterator<InputIter>) |
constexpr | static_vector (InputIter first, InputIter last) |
| Initialize vector from range [first, last).
|
|
constexpr | static_vector (size_type n) noexcept(noexcept(emplace_n(n))) |
| Initializes vector with n default-constructed elements.
|
|
constexpr | static_vector (size_type n, T const &value) noexcept(noexcept(insert(begin(), n, value))) |
| Initializes vector with n with value.
|
|
template<etl::same_as< empty_c_array > Source = empty_c_array> |
constexpr | static_vector (Source) noexcept |
|
constexpr | static_vector (static_vector &&other) noexcept(noexcept(move_insert(begin(), other.begin(), other.end()))) |
| Move constructor.
|
|
constexpr | static_vector (static_vector const &other) noexcept(noexcept(insert(begin(), other.begin(), other.end()))) |
| Copy constructor.
|
|
template<typename InputIter>
requires (detail::InputIterator<InputIter>) |
constexpr auto | assign (InputIter first, InputIter last) noexcept(noexcept(clear()) and noexcept(insert(begin(), first, last))) -> void |
| assign
|
|
constexpr auto | assign (size_type n, T const &u) -> void requires(is_copy_constructible_v< T >) |
|
constexpr auto | back () const noexcept -> const_reference |
|
constexpr auto | back () noexcept -> reference |
| back
|
|
constexpr auto | begin () const noexcept -> const_iterator |
|
constexpr auto | begin () noexcept -> iterator |
|
constexpr auto | capacity () const noexcept -> size_type |
| Maximum number of elements that can be allocated in the vector.
|
|
constexpr auto | cbegin () const noexcept -> const_iterator |
|
constexpr auto | cbegin () noexcept -> const_iterator |
|
constexpr auto | cend () const noexcept -> const_iterator |
|
constexpr auto | cend () noexcept -> const_iterator |
|
constexpr void | clear () noexcept |
| Clears the vector.
|
|
constexpr auto | crbegin () const noexcept -> const_reverse_iterator |
|
constexpr auto | crend () const noexcept -> const_reverse_iterator |
|
template<typename... Args>
requires (is_constructible_v<T, Args...>) |
constexpr auto | emplace (const_iterator position, Args &&... args) noexcept(noexcept(move_insert(position, declval< value_type * >(), declval< value_type * >()))) -> iterator |
|
constexpr auto | end () const noexcept -> const_iterator |
|
constexpr auto | end () noexcept -> iterator |
|
constexpr auto | erase (const_iterator first, const_iterator last) noexcept -> iterator requires(detail::is_movable_v< value_type >) |
|
constexpr auto | erase (const_iterator position) noexcept -> iterator requires(detail::is_movable_v< value_type >) |
| erase
|
|
constexpr auto | front () const noexcept -> const_reference |
|
constexpr auto | front () noexcept -> reference |
| front
|
|
constexpr auto | insert (const_iterator position, const_reference x) noexcept(noexcept(insert(position, size_type(1), x))) -> iterator requires(is_copy_constructible_v< T >) |
|
template<typename InputIt> |
constexpr auto | insert (const_iterator position, InputIt first, InputIt last) noexcept(noexcept(emplace_back(*first))) -> iterator requires(detail::InputIterator< InputIt > &&is_constructible_v< value_type, detail::iterator_reference_t< InputIt > >) |
|
constexpr auto | insert (const_iterator position, size_type n, T const &x) noexcept(noexcept(push_back(x))) -> iterator requires(is_copy_constructible_v< T >) |
|
constexpr auto | insert (const_iterator position, value_type &&x) noexcept(noexcept(move_insert(position, &x, &x+1))) -> iterator requires(is_move_constructible_v< T >) |
|
constexpr auto | max_size () const noexcept -> size_type |
|
template<typename InIt>
requires (detail::InputIterator<InIt>) |
constexpr auto | move_insert (const_iterator position, InIt first, InIt last) noexcept(noexcept(emplace_back(etl::move(*first)))) -> iterator |
|
constexpr auto | operator= (static_vector &&other) noexcept(noexcept(clear()) and noexcept(move_insert(begin(), other.begin(), other.end()))) -> static_vector &requires(is_assignable_v< reference, reference >) |
| Move assignment.
|
|
constexpr auto | operator= (static_vector const &other) noexcept(noexcept(clear()) &&noexcept(insert(begin(), other.begin(), other.end()))) -> static_vector &requires(is_assignable_v< reference, const_reference >) |
| Copy assignment.
|
|
constexpr auto | operator[] (size_type pos) const noexcept -> const_reference |
| Unchecked access to element at index pos (UB if index not in.
|
|
constexpr auto | operator[] (size_type pos) noexcept -> reference |
| Unchecked access to element at index pos (UB if index not in.
|
|
template<typename U>
requires (is_constructible_v<T, U> and is_assignable_v<reference, U &&>) |
constexpr auto | push_back (U &&value) noexcept(noexcept(emplace_back(etl::forward< U >(value)))) -> void |
| Appends value at the end of the vector.
|
|
constexpr auto | rbegin () const noexcept -> const_reverse_iterator |
|
constexpr auto | rbegin () noexcept -> reverse_iterator |
|
constexpr auto | rend () const noexcept -> const_reverse_iterator |
|
constexpr auto | rend () noexcept -> reverse_iterator |
|
constexpr auto | resize (size_type sz) noexcept((is_move_constructible_v< T > &&is_nothrow_move_constructible_v< T >)||(is_copy_constructible_v< T > &&is_nothrow_copy_constructible_v< T >)) -> void requires(detail::is_movable_v< value_type >) |
| Resizes the container to contain sz elements. If elements need to be appended, these are move-constructed from T{} (or copy-constructed.
|
|
constexpr auto | resize (size_type sz, T const &value) noexcept(is_nothrow_copy_constructible_v< T >) -> void requires(is_copy_constructible_v< T >) |
|
constexpr auto | size () const noexcept -> size_type |
| Number of elements in the vector.
|
|
constexpr auto | swap (static_vector &other) noexcept(is_nothrow_swappable_v< T >) -> void requires(is_assignable_v< T &, T && >) |
| Exchanges the contents of the container with those of other.
|
|
template<typename T,
size_t Capacity>
struct etl::static_vector< T, Capacity >
Dynamically-resizable fixed-capacity vector.
#undef NDEBUG
struct Person {
constexpr Person(int a, int e) noexcept
: age{a}
, experience{e}
{
}
friend constexpr auto operator==(Person lhs, Person rhs)
noexcept ->
bool =
default;
int age{};
int experience{};
};
auto main() -> int
{
assert(people.capacity() == 32);
people.push_back(Person{20, 0});
assert(people.back().age == 20);
people.emplace_back(90, 100);
assert(people.back().age == 90);
auto const copy = people;
auto levelUp = [](auto p) {
p.experience += 1;
return p;
};
assert(people[0].experience == 1);
assert(people[1].experience == 101);
return 0;
}
#define assert(...)
Definition cassert.hpp:19
constexpr auto transform(InputIt first, InputIt last, OutputIt dest, UnaryOp op) -> OutputIt
Applies the given function to a range and stores the result in another range, beginning at dest....
Definition transform.hpp:24
constexpr auto copy(InputIt first, InputIt last, OutputIt destination) -> OutputIt
Copies the elements in the range, defined by [first, last), to another range beginning at destination...
Definition copy.hpp:18
constexpr auto end
Definition end.hpp:56
constexpr auto begin
Definition begin.hpp:61
constexpr auto operator==(duration< Rep1, Period1 > const &lhs, duration< Rep2, Period2 > const &rhs) -> bool
Compares two durations. Checks if lhs and rhs are equal, i.e. the number of ticks for the type common...
Definition duration.hpp:299
Dynamically-resizable fixed-capacity vector.
Definition static_vector.hpp:329
- Examples
- algorithm.cpp, numeric.cpp, and vector.cpp.