31#ifndef ETL_VECTOR_INCLUDED
32#define ETL_VECTOR_INCLUDED
34#define ETL_IN_VECTOR_H
48#include "static_assert.h"
76 typedef const T& const_reference;
78 typedef T&& rvalue_reference;
81 typedef const T* const_pointer;
83 typedef const T* const_iterator;
84 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
85 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
86 typedef size_t size_type;
87 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
126 const_iterator
end()
const
155 return reverse_iterator(
end());
164 return const_reverse_iterator(
end());
173 return reverse_iterator(
begin());
180 const_reverse_iterator
rend()
const
182 return const_reverse_iterator(
begin());
191 return const_reverse_iterator(
cend());
198 const_reverse_iterator
crend()
const
200 return const_reverse_iterator(
cbegin());
222 void resize(
size_t new_size, const_reference value)
226 const size_t current_size =
size();
227 size_t delta = (current_size < new_size) ? new_size - current_size : current_size - new_size;
229 if (current_size < new_size)
232 ETL_ADD_DEBUG_COUNT(delta);
237 ETL_SUBTRACT_DEBUG_COUNT(delta);
251#if defined(ETL_DEBUG_COUNT)
252 if (
size() < new_size)
254 ETL_ADD_DEBUG_COUNT(new_size -
size());
258 ETL_SUBTRACT_DEBUG_COUNT(
size() - new_size);
306 reference
at(
size_t i)
319 const_reference
at(
size_t i)
const
378 ETL_CONSTEXPR const_pointer
data()
const
391 template <
typename TIterator>
392 typename etl::enable_if<!etl::is_integral<TIterator>::value,
void>
::type assign(TIterator first, TIterator last)
394 ETL_STATIC_ASSERT((etl::is_same<
typename etl::remove_cv<T>::type,
396 "Iterator type does not match container type");
398#if ETL_IS_DEBUG_BUILD
399 difference_type d = etl::distance(first, last);
406 ETL_ADD_DEBUG_COUNT(uint32_t(etl::distance(first, last)));
423 ETL_ADD_DEBUG_COUNT(uint32_t(n));
466 create_back(etl::move(value));
470#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_VECTOR_FORCE_CPP03_IMPLEMENTATION)
477 template <
typename... Args>
480 ETL_ASSERT_CHECK_PUSH_POP(
size() !=
CAPACITY, ETL_ERROR(vector_full));
482 ::new (
p_end) T(etl::forward<Args>(args)...);
484 ETL_INCREMENT_DEBUG_COUNT;
500 ETL_INCREMENT_DEBUG_COUNT;
510 template <
typename T1>
515 ::new (
p_end) T(value1);
517 ETL_INCREMENT_DEBUG_COUNT;
527 template <
typename T1,
typename T2>
532 ::new (
p_end) T(value1, value2);
534 ETL_INCREMENT_DEBUG_COUNT;
544 template <
typename T1,
typename T2,
typename T3>
545 reference
emplace_back(
const T1& value1,
const T2& value2,
const T3& value3)
549 ::new (
p_end) T(value1, value2, value3);
551 ETL_INCREMENT_DEBUG_COUNT;
561 template <
typename T1,
typename T2,
typename T3,
typename T4>
562 reference
emplace_back(
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
566 ::new (
p_end) T(value1, value2, value3, value4);
568 ETL_INCREMENT_DEBUG_COUNT;
593 iterator
insert(const_iterator position, const_reference value)
598 iterator position_ = to_iterator(position);
600 if (position_ ==
end())
607 etl::move_backward(position_,
p_end - 2,
p_end - 1);
627 iterator position_ = to_iterator(position);
629 if (position_ ==
end())
631 create_back(etl::move(value));
635 create_back(etl::move(
back()));
636 etl::move_backward(position_,
p_end - 2,
p_end - 1);
637 *position_ = etl::move(value);
647#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT
648 template <
typename... Args>
649 iterator
emplace(const_iterator position, Args&&... args)
652 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
654 iterator position_ = to_iterator(position);
658 if (position_ ==
end())
661 ETL_INCREMENT_DEBUG_COUNT;
667 etl::move_backward(position_,
p_end - 2,
p_end - 1);
671 ::new (p) T(etl::forward<Args>(args)...);
676 template <
typename T1>
677 iterator
emplace(const_iterator position,
const T1& value1)
682 iterator position_ = to_iterator(position);
686 if (position_ ==
end())
689 ETL_INCREMENT_DEBUG_COUNT;
695 etl::move_backward(position_,
p_end - 2,
p_end - 1);
704 template <
typename T1,
typename T2>
710 iterator position_ = to_iterator(position);
714 if (position_ ==
end())
717 ETL_INCREMENT_DEBUG_COUNT;
723 etl::move_backward(position_,
p_end - 2,
p_end - 1);
727 ::new (p) T(value1, value2);
732 template <
typename T1,
typename T2,
typename T3>
733 iterator
emplace(const_iterator position,
const T1& value1,
const T2& value2,
const T3& value3)
736 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
738 iterator position_ = to_iterator(position);
742 if (position_ ==
end())
745 ETL_INCREMENT_DEBUG_COUNT;
751 etl::move_backward(position_,
p_end - 2,
p_end - 1);
755 ::new (p) T(value1, value2, value3);
760 template <
typename T1,
typename T2,
typename T3,
typename T4>
761 iterator
emplace(const_iterator position,
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
764 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
766 iterator position_ = to_iterator(position);
770 if (position_ ==
end())
773 ETL_INCREMENT_DEBUG_COUNT;
779 etl::move_backward(position_,
p_end - 2,
p_end - 1);
783 ::new (p) T(value1, value2, value3, value4);
797 void insert(const_iterator position,
size_t n, parameter_t value)
802 iterator position_ = to_iterator(position);
805 size_t insert_begin =
static_cast<size_t>(etl::distance(
begin(), position_));
806 size_t insert_end = insert_begin + insert_n;
810 size_t construct_old_n;
811 iterator p_construct_old;
813 if (insert_end >
size())
816 construct_old_n =
size() - insert_begin;
817 p_construct_old =
p_buffer + insert_end;
821 copy_old_n =
size() - insert_begin - insert_n;
822 construct_old_n = insert_n;
823 p_construct_old =
p_end;
826 size_t copy_new_n = construct_old_n;
827 size_t construct_new_n = insert_n - copy_new_n;
831 ETL_ADD_DEBUG_COUNT(construct_old_n);
834 etl::move_backward(
p_buffer + insert_begin,
p_buffer + insert_begin + copy_old_n,
p_buffer + insert_end + copy_old_n);
838 ETL_ADD_DEBUG_COUNT(construct_new_n);
841 etl::fill_n(
p_buffer + insert_begin, copy_new_n, value);
854 template <
class TIterator>
855 void insert(const_iterator position, TIterator first, TIterator last,
typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
857 size_t count =
static_cast<size_t>(etl::distance(first, last));
862 size_t insert_n = count;
863 size_t insert_begin =
static_cast<size_t>(etl::distance(
cbegin(), position));
864 size_t insert_end = insert_begin + insert_n;
868 size_t construct_old_n;
869 iterator p_construct_old;
871 if (insert_end >
size())
874 construct_old_n =
size() - insert_begin;
875 p_construct_old =
p_buffer + insert_end;
879 copy_old_n =
size() - insert_begin - insert_n;
880 construct_old_n = insert_n;
881 p_construct_old =
p_end;
884 size_t copy_new_n = construct_old_n;
885 size_t construct_new_n = insert_n - copy_new_n;
889 ETL_ADD_DEBUG_COUNT(construct_old_n);
892 etl::move_backward(
p_buffer + insert_begin,
p_buffer + insert_begin + copy_old_n,
p_buffer + insert_end + copy_old_n);
895 typedef typename etl::iterator_traits<TIterator>::difference_type diff_t;
897 ETL_ADD_DEBUG_COUNT(construct_new_n);
900 etl::copy(first, first +
static_cast<diff_t
>(copy_new_n),
p_buffer + insert_begin);
915 etl::move(i_element + 1,
end(), i_element);
927 iterator
erase(const_iterator i_element)
931 iterator i_element_ = to_iterator(i_element);
933 etl::move(i_element_ + 1,
end(), i_element_);
948 iterator
erase(const_iterator first, const_iterator last)
952 iterator first_ = to_iterator(first);
953 iterator last_ = to_iterator(last);
955 if (first ==
begin() && last ==
end())
961 etl::move(last_,
end(), first_);
962 size_t n_delete =
static_cast<size_t>(etl::distance(first_, last_));
966 ETL_SUBTRACT_DEBUG_COUNT(n_delete);
990 etl::swap_ranges(smaller.
begin(), smaller.
end(), larger.
begin());
992 typename ivector<T>::iterator larger_itr =
997 larger.
erase(larger_itr, larger.
end());
1023 while (itr != rhs.end())
1072#ifdef ETL_IVECTOR_REPAIR_ENABLE
1076 virtual void repair() = 0;
1096 if ETL_IF_CONSTEXPR (etl::is_trivially_destructible<T>::value)
1098 ETL_RESET_DEBUG_COUNT;
1103 ETL_SUBTRACT_DEBUG_COUNT(int32_t(etl::distance(
p_buffer,
p_end)));
1114 uintptr_t length =
static_cast<uintptr_t
>(
p_end -
p_buffer);
1116 p_end = p_buffer_ + length;
1130 ETL_INCREMENT_DEBUG_COUNT;
1138 void create_back(const_reference value)
1141 ETL_INCREMENT_DEBUG_COUNT;
1150 void create_back(rvalue_reference value)
1153 ETL_INCREMENT_DEBUG_COUNT;
1167 ETL_DECREMENT_DEBUG_COUNT;
1178 ETL_CONSTEXPR iterator to_iterator(const_iterator itr)
const
1180 return const_cast<iterator
>(itr);
1191 template <
typename T>
1204 template <
typename T>
1207 return !(lhs == rhs);
1217 template <
typename T>
1220 return etl::lexicographical_compare(lhs.
begin(), lhs.
end(), rhs.
begin(), rhs.
end());
1230 template <
typename T>
1244 template <
typename T>
1247 return !(lhs > rhs);
1258 template <
typename T>
1261 return !(lhs < rhs);
1275 template <
typename T, const
size_t MAX_SIZE_>
1280 ETL_STATIC_ASSERT((MAX_SIZE_ > 0U),
"Zero capacity etl::vector is not valid");
1282 static const size_t MAX_SIZE = MAX_SIZE_;
1288 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1298 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1301 this->
resize(initial_size);
1309 vector(
size_t initial_size,
typename etl::ivector<T>::parameter_t value)
1310 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1313 this->
resize(initial_size, value);
1322 template <
typename TIterator>
1323 vector(TIterator first, TIterator last,
typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
1324 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1326 this->
assign(first, last);
1329#if ETL_HAS_INITIALIZER_LIST
1333 vector(std::initializer_list<T> init)
1334 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1336 this->
assign(init.begin(), init.end());
1344 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1367 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1373 typename etl::ivector<T>::iterator itr = other.begin();
1374 while (itr != other.end())
1392 typename etl::ivector<T>::iterator itr = rhs.
begin();
1393 while (itr != rhs.end())
1409#ifdef ETL_IVECTOR_REPAIR_ENABLE
1420#ifdef ETL_IVECTOR_REPAIR_ENABLE
1421 virtual void repair() ETL_OVERRIDE
1439#if ETL_USING_CPP17 && ETL_HAS_INITIALIZER_LIST
1440 template <
typename... T>
1441 vector(T...) -> vector<
typename etl::common_type_t<T...>,
sizeof...(T)>;
1447#if ETL_USING_CPP11 && ETL_HAS_INITIALIZER_LIST
1448 template <
typename... T>
1449 constexpr auto make_vector(T&&... t) ->
etl::vector<
typename etl::common_type_t<T...>,
sizeof...(T)>
1451 return {etl::forward<T>(t)...};
1461 template <
typename T>
1470 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1479 explicit vector_ext(
size_t initial_size,
void* buffer,
size_t max_size)
1480 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1483 this->
resize(initial_size);
1491 vector_ext(
size_t initial_size,
typename etl::ivector<T>::parameter_t value,
void* buffer,
size_t max_size)
1492 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1495 this->
resize(initial_size, value);
1504 template <
typename TIterator>
1505 vector_ext(TIterator first, TIterator last,
void* buffer,
size_t max_size,
1506 typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
1507 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1509 this->
assign(first, last);
1512#if ETL_HAS_INITIALIZER_LIST
1516 vector_ext(std::initializer_list<T> init,
void* buffer,
size_t max_size)
1517 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1519 this->
assign(init.begin(), init.end());
1527 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1550 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1556 typename etl::ivector<T>::iterator itr = other.
begin();
1557 while (itr != other.end())
1576 typename etl::ivector<T>::iterator itr = rhs.
begin();
1577 while (itr != rhs.end())
1601#ifdef ETL_IVECTOR_REPAIR_ENABLE
1602 virtual void repair() ETL_OVERRIDE
1616 template <
typename T, const
size_t MAX_SIZE_>
1621 ETL_STATIC_ASSERT((MAX_SIZE_ > 0U),
"Zero capacity etl::vector is not valid");
1623 static const size_t MAX_SIZE = MAX_SIZE_;
1629 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1639 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1642 this->
resize(initial_size);
1650 vector(
size_t initial_size,
typename etl::ivector<T*>::parameter_t value)
1651 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1654 this->
resize(initial_size, value);
1663 template <
typename TIterator>
1664 vector(TIterator first, TIterator last,
typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
1665 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1667 this->
assign(first, last);
1670#if ETL_HAS_INITIALIZER_LIST
1674 vector(std::initializer_list<T*> init)
1675 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1677 this->assign(init.begin(), init.end());
1685 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1705 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1713 vector& operator=(vector&& rhs)
1724#ifdef ETL_IVECTOR_REPAIR_ENABLE
1725 virtual void repair() ETL_OVERRIDE
1741#if ETL_USING_CPP17 && ETL_HAS_INITIALIZER_LIST
1742 template <
typename... T>
1743 vector(T*...) -> vector<
typename etl::common_type_t<T*...>,
sizeof...(T)>;
1746#if ETL_USING_CPP11 && ETL_HAS_INITIALIZER_LIST
1747 template <
typename... T>
1748 constexpr auto make_vector(T*... t) ->
etl::vector<
typename etl::common_type_t<T*...>,
sizeof...(T)>
1750 return {etl::forward<T*>(t)...};
1760 template <
typename T>
1769 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1779 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1782 this->
resize(initial_size);
1790 vector_ext(
size_t initial_size,
typename etl::ivector<T*>::parameter_t value,
void* buffer,
size_t max_size)
1791 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1794 this->
resize(initial_size, value);
1803 template <
typename TIterator>
1804 vector_ext(TIterator first, TIterator last,
void* buffer,
size_t max_size,
1805 typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
1806 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1808 this->
assign(first, last);
1811#if ETL_HAS_INITIALIZER_LIST
1815 vector_ext(std::initializer_list<T*> init,
void* buffer,
size_t max_size)
1816 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1818 this->assign(init.begin(), init.end());
1826 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1851 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1859 vector_ext(vector_ext&& other) ETL_DELETE;
1864 vector_ext& operator=(vector_ext&& rhs)
1883#ifdef ETL_IVECTOR_REPAIR_ENABLE
1884 virtual void repair() ETL_OVERRIDE
1896 template <
typename T,
typename U>
1900 typename etl::ivector<T>::difference_type d = etl::distance(itr, v.
end());
1909 template <
typename T,
typename TPredicate>
1913 typename etl::ivector<T>::difference_type d = etl::distance(itr, v.
end());
1924 template <
typename T>
ETL_CONSTEXPR14 TIterator remove(TIterator first, TIterator last, const T &value)
Definition algorithm.h:2344
ETL_CONSTEXPR14 TIterator remove_if(TIterator first, TIterator last, TUnaryPredicate predicate)
Definition algorithm.h:2369
Definition alignment.h:251
#define ETL_ASSERT(b, e)
Definition error_handler.h:511
ETL_CONSTEXPR17 etl::enable_if<!etl::is_same< T, etl::nullptr_t >::value, T >::type * addressof(T &t)
Definition addressof.h:52
void create_copy_at(T *p, const T &value)
Definition memory.h:2369
void create_value_at(T *p)
Definition memory.h:2348
etl::enable_if< etl::is_trivially_destructible< typenameetl::iterator_traits< TIterator >::value_type >::value, void >::type destroy(TIterator, TIterator)
Definition memory.h:1585
etl::enable_if< etl::is_trivially_destructible< T >::value, void >::type destroy_at(T *)
Definition memory.h:1511
etl::enable_if< etl::is_trivially_destructible< typenameetl::iterator_traits< TIterator >::value_type >::value, TIterator >::type destroy_n(TIterator i_begin, TSize n)
Definition memory.h:1671
TOutputIterator uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition memory.h:669
TOutputIterator uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition memory.h:239
TOutputIterator uninitialized_fill_n(TOutputIterator o_begin, TSize n, const T &value)
Definition memory.h:212
iterator erase(const_iterator i_element)
Definition vector.h:927
void initialise()
Initialise the vector.
Definition vector.h:1094
iterator begin()
Definition vector.h:99
~vector_ext()
Destructor.
Definition vector.h:1593
vector_ext & operator=(const vector_ext &rhs)
Assignment operator.
Definition vector.h:1839
const_reference at(size_t i) const
Definition vector.h:319
void assign(TIterator first, TIterator last)
Definition ivectorpointer.h:323
size_type max_size() const
Definition vector_base.h:140
reference emplace_back(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition vector.h:562
const_iterator begin() const
Definition vector.h:108
void push_back(const_reference value)
Definition vector.h:448
vector_ext(size_t initial_size, typename etl::ivector< T >::parameter_t value, void *buffer, size_t max_size)
Definition vector.h:1491
vector()
Constructor.
Definition vector.h:1628
vector_ext(TIterator first, TIterator last, void *buffer, size_t max_size, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1505
const_reverse_iterator crbegin() const
Definition vector.h:189
vector(size_t initial_size)
Definition vector.h:1297
reverse_iterator rend()
Definition vector.h:171
const_iterator cend() const
Definition vector.h:144
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1423
vector(const vector &other)
Copy constructor.
Definition vector.h:1343
vector_ext(void *buffer, size_t max_size)
Constructor.
Definition vector.h:1469
void clear()
Clears the vector.
Definition vector.h:429
vector_ext(size_t initial_size, void *buffer, size_t max_size)
Definition vector.h:1479
etl::enable_if<!etl::is_integral< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition vector.h:392
iterator erase(const_iterator first, const_iterator last)
Definition vector.h:948
vector_base(size_t max_size_)
Constructor.
Definition vector_base.h:150
const size_type CAPACITY
The maximum number of elements in the vector.
Definition vector_base.h:170
void insert(const_iterator position, TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:855
reference emplace_back(const T1 &value1, const T2 &value2)
Definition vector.h:528
pointer p_buffer
Definition vector.h:1119
vector_ext(size_t initial_size, typename etl::ivector< T * >::parameter_t value, void *buffer, size_t max_size)
Definition vector.h:1790
vector & operator=(const vector &rhs)
Assignment operator.
Definition vector.h:1693
reference front()
Definition vector.h:329
iterator end()
Definition vector.h:117
pointer data()
Definition vector.h:369
vector(size_t initial_size, typename etl::ivector< T * >::parameter_t value)
Definition vector.h:1650
const_reverse_iterator crend() const
Definition vector.h:198
vector(size_t initial_size, typename etl::ivector< T >::parameter_t value)
Definition vector.h:1309
reference operator[](size_t i)
Definition vector.h:282
~vector_ext()
Destructor.
Definition vector.h:1875
void swap(ivector< T > &other)
Definition vector.h:978
const_iterator cbegin() const
Definition vector.h:135
ivector(T *p_buffer_, size_t MAX_SIZE)
Constructor.
Definition vector.h:1084
const_iterator end() const
Definition vector.h:126
const_reverse_iterator rend() const
Definition vector.h:180
vector_ext(size_t initial_size, void *buffer, size_t max_size)
Definition vector.h:1778
vector(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1323
void pop_back()
Definition vector.h:579
void resize(size_t new_size, const_reference value)
Definition vector.h:222
void assign(size_t n, parameter_t value)
Definition vector.h:416
ivector(T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition ivectorpointer.h:545
reference at(size_t i)
Definition vector.h:306
ivector & operator=(const ivector &rhs)
Assignment operator.
Definition vector.h:1003
const_reference back() const
Definition vector.h:359
vector_ext(TIterator first, TIterator last, void *buffer, size_t max_size, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1804
reference emplace_back(const T1 &value1)
Definition vector.h:511
vector(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1664
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1604
vector_ext(void *buffer, size_t max_size)
Constructor.
Definition vector.h:1768
vector_ext & operator=(const vector_ext &rhs)
Assignment operator.
Definition vector.h:1535
void repair_buffer(T *p_buffer_)
Fix the internal pointers after a low level memory copy.
Definition vector.h:1112
vector(const vector &other)
Copy constructor.
Definition vector.h:1684
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1727
const_reference operator[](size_t i) const
Definition vector.h:293
void fill(const T &value)
Fills the vector.
Definition vector.h:437
bool full() const
Definition vector.h:1058
vector_ext(const vector_ext &other, void *buffer, size_t max_size)
Copy constructor.
Definition vector.h:1526
reference emplace_back()
Definition vector.h:494
pointer p_end
Definition vector.h:1120
vector(size_t initial_size)
Definition vector.h:1638
size_type size() const
Definition vector.h:1040
iterator erase(iterator i_element)
Definition vector.h:911
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1886
void insert(const_iterator position, size_t n, parameter_t value)
Definition vector.h:797
bool empty() const
Definition vector.h:1049
const_reverse_iterator rbegin() const
Definition vector.h:162
void resize(size_t new_size)
Definition vector.h:209
void clear()
Clears the vector.
Definition ivectorpointer.h:343
~vector()
Destructor.
Definition vector.h:1412
ETL_CONSTEXPR const_pointer data() const
Definition vector.h:378
reference back()
Definition vector.h:349
void uninitialized_resize(size_t new_size)
Definition vector.h:247
size_t available() const
Definition vector.h:1067
vector()
Constructor.
Definition vector.h:1287
iterator emplace(const_iterator position, const T1 &value1)
Emplaces a value to the vector at the specified position.
Definition vector.h:677
vector_ext(const vector_ext &other, void *buffer, size_t max_size)
Construct a copy.
Definition vector.h:1825
void reserve(size_t n)
Definition vector.h:271
vector & operator=(const vector &rhs)
Assignment operator.
Definition vector.h:1352
reverse_iterator rbegin()
Definition vector.h:153
const_reference front() const
Definition vector.h:339
iterator insert(const_iterator position, const_reference value)
Definition vector.h:593
reference emplace_back(const T1 &value1, const T2 &value2, const T3 &value3)
Definition vector.h:545
vector_ext(const vector_ext &other) ETL_DELETE
Copy constructor (Deleted).
void resize(size_t new_size)
Definition ivectorpointer.h:189
Definition vector_base.h:122
Definition vector_base.h:80
Template deduction guides.
Definition vector.h:1463
Definition vector_base.h:66
Definition vector_base.h:108
Definition vector_base.h:94
bitset_ext
Definition absolute.h:40
ETL_CONSTEXPR14 void swap(etl::typed_storage_ext< T > &lhs, etl::typed_storage_ext< T > &rhs) ETL_NOEXCEPT
Swap two etl::typed_storage_ext.
Definition alignment.h:856
ETL_CONSTEXPR14 bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1081
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1133
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1147
etl::ivector< T >::difference_type erase(etl::ivector< T > &v, const U &value)
erase
Definition vector.h:1897
ETL_CONSTEXPR14 bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1093
ETL_NODISCARD ETL_CONSTEXPR14 etl::back_insert_iterator< TContainer > back_inserter(TContainer &container)
Creates a back_insert_iterator from a container.
Definition iterator.h:673
etl::ivector< T >::difference_type erase_if(etl::ivector< T > &v, TPredicate predicate)
erase_if
Definition vector.h:1910
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1106
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1120
iterator
Definition iterator.h:424
etl::conditional< etl::is_fundamental< T >::value||etl::is_pointer< T >::value, T, constT & >::type type
By default fundamental and pointer types are passed by value.
Definition parameter_type.h:46
remove_cv
Definition type_traits.h:325