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());
221 void resize(
size_t new_size, const_reference value)
225 const size_t current_size =
size();
226 size_t delta = (current_size < new_size) ? new_size - current_size : current_size - new_size;
228 if (current_size < new_size)
231 ETL_ADD_DEBUG_COUNT(delta);
236 ETL_SUBTRACT_DEBUG_COUNT(delta);
250#if defined(ETL_DEBUG_COUNT)
251 if (
size() < new_size)
253 ETL_ADD_DEBUG_COUNT(new_size -
size());
257 ETL_SUBTRACT_DEBUG_COUNT(
size() - new_size);
303 reference
at(
size_t i)
315 const_reference
at(
size_t i)
const
374 ETL_CONSTEXPR const_pointer
data()
const
386 template <
typename TIterator>
390 ETL_STATIC_ASSERT((
etl::is_same<
typename etl::remove_cv<T>::type,
typename etl::remove_cv<
typename etl::iterator_traits<TIterator>::value_type>
::type>::value),
"Iterator type does not match container type");
392#if ETL_IS_DEBUG_BUILD
393 difference_type d = etl::distance(first, last);
400 ETL_ADD_DEBUG_COUNT(uint32_t(etl::distance(first, last)));
416 ETL_ADD_DEBUG_COUNT(uint32_t(n));
457 create_back(etl::move(value));
461#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_VECTOR_FORCE_CPP03_IMPLEMENTATION)
467 template <
typename ... Args>
470 ETL_ASSERT_CHECK_PUSH_POP(
size() !=
CAPACITY, ETL_ERROR(vector_full));
472 ::new (
p_end) T(etl::forward<Args>(args)...);
474 ETL_INCREMENT_DEBUG_COUNT;
489 ETL_INCREMENT_DEBUG_COUNT;
498 template <
typename T1>
503 ::new (
p_end) T(value1);
505 ETL_INCREMENT_DEBUG_COUNT;
514 template <
typename T1,
typename T2>
519 ::new (
p_end) T(value1, value2);
521 ETL_INCREMENT_DEBUG_COUNT;
530 template <
typename T1,
typename T2,
typename T3>
531 reference
emplace_back(
const T1& value1,
const T2& value2,
const T3& value3)
535 ::new (
p_end) T(value1, value2, value3);
537 ETL_INCREMENT_DEBUG_COUNT;
546 template <
typename T1,
typename T2,
typename T3,
typename T4>
547 reference
emplace_back(
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
551 ::new (
p_end) T(value1, value2, value3, value4);
553 ETL_INCREMENT_DEBUG_COUNT;
576 iterator
insert(const_iterator position, const_reference value)
581 iterator position_ = to_iterator(position);
583 if (position_ ==
end())
590 etl::move_backward(position_,
p_end - 2,
p_end - 1);
609 iterator position_ = to_iterator(position);
611 if (position_ ==
end())
613 create_back(etl::move(value));
617 create_back(etl::move(
back()));
618 etl::move_backward(position_,
p_end - 2,
p_end - 1);
619 *position_ = etl::move(value);
629#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT
630 template <
typename ... Args>
631 iterator
emplace(const_iterator position, Args && ... args)
634 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
636 iterator position_ = to_iterator(position);
640 if (position_ ==
end())
643 ETL_INCREMENT_DEBUG_COUNT;
649 etl::move_backward(position_,
p_end - 2,
p_end - 1);
653 ::new (p) T(etl::forward<Args>(args)...);
658 template <
typename T1>
659 iterator
emplace(const_iterator position,
const T1& value1)
664 iterator position_ = to_iterator(position);
668 if (position_ ==
end())
671 ETL_INCREMENT_DEBUG_COUNT;
677 etl::move_backward(position_,
p_end - 2,
p_end - 1);
686 template <
typename T1,
typename T2>
692 iterator position_ = to_iterator(position);
696 if (position_ ==
end())
699 ETL_INCREMENT_DEBUG_COUNT;
705 etl::move_backward(position_,
p_end - 2,
p_end - 1);
709 ::new (p) T(value1, value2);
714 template <
typename T1,
typename T2,
typename T3>
715 iterator
emplace(const_iterator position,
const T1& value1,
const T2& value2,
const T3& value3)
718 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
720 iterator position_ = to_iterator(position);
724 if (position_ ==
end())
727 ETL_INCREMENT_DEBUG_COUNT;
733 etl::move_backward(position_,
p_end - 2,
p_end - 1);
737 ::new (p) T(value1, value2, value3);
742 template <
typename T1,
typename T2,
typename T3,
typename T4>
743 iterator
emplace(const_iterator position,
const T1& value1,
const T2& value2,
const T3& value3,
const T4& value4)
746 ETL_ASSERT_CHECK_EXTRA(
cbegin() <= position && position <=
cend(), ETL_ERROR(vector_out_of_bounds));
748 iterator position_ = to_iterator(position);
752 if (position_ ==
end())
755 ETL_INCREMENT_DEBUG_COUNT;
761 etl::move_backward(position_,
p_end - 2,
p_end - 1);
765 ::new (p) T(value1, value2, value3, value4);
778 void insert(const_iterator position,
size_t n, parameter_t value)
783 iterator position_ = to_iterator(position);
786 size_t insert_begin = etl::distance(
begin(), position_);
787 size_t insert_end = insert_begin + insert_n;
791 size_t construct_old_n;
792 iterator p_construct_old;
794 if (insert_end >
size())
797 construct_old_n =
size() - insert_begin;
798 p_construct_old =
p_buffer + insert_end;
802 copy_old_n =
size() - insert_begin - insert_n;
803 construct_old_n = insert_n;
804 p_construct_old =
p_end;
807 size_t copy_new_n = construct_old_n;
808 size_t construct_new_n = insert_n - copy_new_n;
812 ETL_ADD_DEBUG_COUNT(construct_old_n);
815 etl::move_backward(
p_buffer + insert_begin,
p_buffer + insert_begin + copy_old_n,
p_buffer + insert_end + copy_old_n);
819 ETL_ADD_DEBUG_COUNT(construct_new_n);
822 etl::fill_n(
p_buffer + insert_begin, copy_new_n, value);
835 template <
class TIterator>
836 void insert(const_iterator position, TIterator first, TIterator last,
typename etl::enable_if<!etl::is_integral<TIterator>::value,
int>
::type = 0)
838 size_t count = etl::distance(first, last);
843 size_t insert_n = count;
844 size_t insert_begin = etl::distance(
cbegin(), position);
845 size_t insert_end = insert_begin + insert_n;
849 size_t construct_old_n;
850 iterator p_construct_old;
852 if (insert_end >
size())
855 construct_old_n =
size() - insert_begin;
856 p_construct_old =
p_buffer + insert_end;
860 copy_old_n =
size() - insert_begin - insert_n;
861 construct_old_n = insert_n;
862 p_construct_old =
p_end;
865 size_t copy_new_n = construct_old_n;
866 size_t construct_new_n = insert_n - copy_new_n;
870 ETL_ADD_DEBUG_COUNT(construct_old_n);
873 etl::move_backward(
p_buffer + insert_begin,
p_buffer + insert_begin + copy_old_n,
p_buffer + insert_end + copy_old_n);
877 ETL_ADD_DEBUG_COUNT(construct_new_n);
880 etl::copy(first, first + copy_new_n,
p_buffer + insert_begin);
894 etl::move(i_element + 1,
end(), i_element);
905 iterator
erase(const_iterator i_element)
909 iterator i_element_ = to_iterator(i_element);
911 etl::move(i_element_ + 1,
end(), i_element_);
925 iterator
erase(const_iterator first, const_iterator last)
929 iterator first_ = to_iterator(first);
930 iterator last_ = to_iterator(last);
932 if (first ==
begin() && last ==
end())
938 etl::move(last_,
end(), first_);
939 size_t n_delete = etl::distance(first_, last_);
943 ETL_SUBTRACT_DEBUG_COUNT(n_delete);
973 while (itr != rhs.end())
1022#ifdef ETL_IVECTOR_REPAIR_ENABLE
1026 virtual void repair() = 0;
1046 if ETL_IF_CONSTEXPR(etl::is_trivially_destructible<T>::value)
1048 ETL_RESET_DEBUG_COUNT;
1053 ETL_SUBTRACT_DEBUG_COUNT(int32_t(etl::distance(
p_buffer,
p_end)));
1066 p_end = p_buffer_ + length;
1080 ETL_INCREMENT_DEBUG_COUNT;
1088 void create_back(const_reference value)
1091 ETL_INCREMENT_DEBUG_COUNT;
1100 void create_back(rvalue_reference value)
1103 ETL_INCREMENT_DEBUG_COUNT;
1117 ETL_DECREMENT_DEBUG_COUNT;
1128 ETL_CONSTEXPR iterator to_iterator(const_iterator itr)
const
1130 return const_cast<iterator
>(itr);
1141 template <
typename T>
1154 template <
typename T>
1157 return !(lhs == rhs);
1167 template <
typename T>
1170 return etl::lexicographical_compare(lhs.
begin(), lhs.
end(), rhs.
begin(), rhs.
end());
1180 template <
typename T>
1193 template <
typename T>
1196 return !(lhs > rhs);
1206 template <
typename T>
1209 return !(lhs < rhs);
1223 template <
typename T, const
size_t MAX_SIZE_>
1228 ETL_STATIC_ASSERT((MAX_SIZE_ > 0U),
"Zero capacity etl::vector is not valid");
1230 static const size_t MAX_SIZE = MAX_SIZE_;
1236 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1246 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1249 this->
resize(initial_size);
1257 vector(
size_t initial_size,
typename etl::ivector<T>::parameter_t value)
1258 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1261 this->
resize(initial_size, value);
1270 template <
typename TIterator>
1272 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1274 this->
assign(first, last);
1277#if ETL_HAS_INITIALIZER_LIST
1281 vector(std::initializer_list<T> init)
1282 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1284 this->
assign(init.begin(), init.end());
1292 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1315 :
etl::
ivector<T>(reinterpret_cast<T*>(&buffer), MAX_SIZE)
1321 typename etl::ivector<T>::iterator itr = other.begin();
1322 while (itr != other.end())
1340 typename etl::ivector<T>::iterator itr = rhs.
begin();
1341 while (itr != rhs.end())
1357#ifdef ETL_IVECTOR_REPAIR_ENABLE
1368#ifdef ETL_IVECTOR_REPAIR_ENABLE
1369 virtual void repair() ETL_OVERRIDE
1387#if ETL_USING_CPP17 && ETL_HAS_INITIALIZER_LIST
1388 template <
typename... T>
1389 vector(T...) -> vector<
typename etl::common_type_t<T...>,
sizeof...(T)>;
1395#if ETL_USING_CPP11 && ETL_HAS_INITIALIZER_LIST
1396 template <
typename... T>
1397 constexpr auto make_vector(T&&... t) ->
etl::vector<
typename etl::common_type_t<T...>,
sizeof...(T)>
1399 return { etl::forward<T>(t)... };
1409 template <
typename T>
1418 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1427 explicit vector_ext(
size_t initial_size,
void* buffer,
size_t max_size)
1428 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1431 this->
resize(initial_size);
1439 vector_ext(
size_t initial_size,
typename etl::ivector<T>::parameter_t value,
void* buffer,
size_t max_size)
1440 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1443 this->
resize(initial_size, value);
1452 template <
typename TIterator>
1454 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1456 this->
assign(first, last);
1459#if ETL_HAS_INITIALIZER_LIST
1463 vector_ext(std::initializer_list<T> init,
void* buffer,
size_t max_size)
1464 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1466 this->
assign(init.begin(), init.end());
1474 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1497 :
etl::
ivector<T>(reinterpret_cast<T*>(buffer), max_size)
1503 typename etl::ivector<T>::iterator itr = other.
begin();
1504 while (itr != other.end())
1523 typename etl::ivector<T>::iterator itr = rhs.
begin();
1524 while (itr != rhs.end())
1548#ifdef ETL_IVECTOR_REPAIR_ENABLE
1549 virtual void repair() ETL_OVERRIDE
1563 template <
typename T, const
size_t MAX_SIZE_>
1568 ETL_STATIC_ASSERT((MAX_SIZE_ > 0U),
"Zero capacity etl::vector is not valid");
1570 static const size_t MAX_SIZE = MAX_SIZE_;
1576 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1586 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1589 this->
resize(initial_size);
1597 vector(
size_t initial_size,
typename etl::ivector<T*>::parameter_t value)
1598 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1601 this->
resize(initial_size, value);
1610 template <
typename TIterator>
1612 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1614 this->
assign(first, last);
1617#if ETL_HAS_INITIALIZER_LIST
1621 vector(std::initializer_list<T*> init)
1622 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1624 this->assign(init.begin(), init.end());
1632 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1652 :
etl::
ivector<T*>(reinterpret_cast<T**>(&buffer), MAX_SIZE)
1660 vector& operator = (vector&& rhs)
1671#ifdef ETL_IVECTOR_REPAIR_ENABLE
1672 virtual void repair() ETL_OVERRIDE
1688#if ETL_USING_CPP17 && ETL_HAS_INITIALIZER_LIST
1689 template <
typename... T>
1690 vector(T*...) -> vector<
typename etl::common_type_t<T*...>,
sizeof...(T)>;
1693#if ETL_USING_CPP11 && ETL_HAS_INITIALIZER_LIST
1694 template <
typename... T>
1695 constexpr auto make_vector(T*... t) ->
etl::vector<
typename etl::common_type_t<T*...>,
sizeof...(T)>
1697 return { etl::forward<T*>(t)... };
1707 template <
typename T>
1716 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1726 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1729 this->
resize(initial_size);
1737 vector_ext(
size_t initial_size,
typename etl::ivector<T*>::parameter_t value,
void* buffer,
size_t max_size)
1738 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1741 this->
resize(initial_size, value);
1750 template <
typename TIterator>
1752 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1754 this->
assign(first, last);
1757#if ETL_HAS_INITIALIZER_LIST
1761 vector_ext(std::initializer_list<T*> init,
void* buffer,
size_t max_size)
1762 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1764 this->assign(init.begin(), init.end());
1772 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1797 :
etl::
ivector<T*>(reinterpret_cast<T**>(buffer), max_size)
1805 vector_ext(vector_ext&& other) ETL_DELETE;
1810 vector_ext& operator = (vector_ext&& rhs)
1829#ifdef ETL_IVECTOR_REPAIR_ENABLE
1830 virtual void repair() ETL_OVERRIDE
1842 template <
typename T,
typename U>
1843 typename etl::ivector<T>::difference_type
1847 typename etl::ivector<T>::difference_type d = etl::distance(itr, v.
end());
1856 template <
typename T,
typename TPredicate>
1857 typename etl::ivector<T>::difference_type
1861 typename etl::ivector<T>::difference_type d = etl::distance(itr, v.
end());
ETL_CONSTEXPR14 TIterator remove(TIterator first, TIterator last, const T &value)
Definition algorithm.h:2300
ETL_CONSTEXPR14 TIterator remove_if(TIterator first, TIterator last, TUnaryPredicate predicate)
Definition algorithm.h:2326
Definition alignment.h:246
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
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:1826
void create_value_at(T *p)
Definition memory.h:1805
etl::enable_if< etl::is_trivially_destructible< T >::value, void >::type destroy_at(T *)
Definition memory.h:1027
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:1190
TOutputIterator uninitialized_move(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition memory.h:480
TOutputIterator uninitialized_copy(TInputIterator i_begin, TInputIterator i_end, TOutputIterator o_begin)
Definition memory.h:237
TOutputIterator uninitialized_fill_n(TOutputIterator o_begin, TSize n, const T &value)
Definition memory.h:210
add_rvalue_reference
Definition type_traits_generator.h:1413
enable_if
Definition type_traits_generator.h:1254
is_same
Definition type_traits_generator.h:1104
remove_cv
Definition type_traits_generator.h:1031
iterator erase(const_iterator i_element)
Definition vector.h:905
void initialise()
Initialise the vector.
Definition vector.h:1044
iterator begin()
Definition vector.h:99
~vector_ext()
Destructor.
Definition vector.h:1540
const_reference at(size_t i) const
Definition vector.h:315
void assign(TIterator first, TIterator last)
Definition ivectorpointer.h:318
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:547
const_iterator begin() const
Definition vector.h:108
void push_back(const_reference value)
Definition vector.h:440
vector_ext(size_t initial_size, typename etl::ivector< T >::parameter_t value, void *buffer, size_t max_size)
Definition vector.h:1439
vector()
Constructor.
Definition vector.h:1575
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:1453
const_reverse_iterator crbegin() const
Definition vector.h:189
vector(size_t initial_size)
Definition vector.h:1245
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:1371
vector(const vector &other)
Copy constructor.
Definition vector.h:1291
vector_ext(void *buffer, size_t max_size)
Constructor.
Definition vector.h:1417
void clear()
Clears the vector.
Definition vector.h:422
vector_ext(size_t initial_size, void *buffer, size_t max_size)
Definition vector.h:1427
etl::enable_if<!etl::is_integral< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition vector.h:388
iterator erase(const_iterator first, const_iterator last)
Definition vector.h:925
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:836
reference emplace_back(const T1 &value1, const T2 &value2)
Definition vector.h:515
pointer p_buffer
Definition vector.h:1069
vector_ext(size_t initial_size, typename etl::ivector< T * >::parameter_t value, void *buffer, size_t max_size)
Definition vector.h:1737
reference front()
Definition vector.h:325
iterator end()
Definition vector.h:117
pointer data()
Definition vector.h:365
vector(size_t initial_size, typename etl::ivector< T * >::parameter_t value)
Definition vector.h:1597
const_reverse_iterator crend() const
Definition vector.h:198
vector(size_t initial_size, typename etl::ivector< T >::parameter_t value)
Definition vector.h:1257
reference operator[](size_t i)
Definition vector.h:280
~vector_ext()
Destructor.
Definition vector.h:1821
const_iterator cbegin() const
Definition vector.h:135
ivector(T *p_buffer_, size_t MAX_SIZE)
Constructor.
Definition vector.h:1034
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:1725
vector(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1271
void pop_back()
Definition vector.h:563
void resize(size_t new_size, const_reference value)
Definition vector.h:221
void assign(size_t n, parameter_t value)
Definition vector.h:409
ivector(T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition ivectorpointer.h:504
reference at(size_t i)
Definition vector.h:303
ivector & operator=(const ivector &rhs)
Assignment operator.
Definition vector.h:953
const_reference back() const
Definition vector.h:355
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:1751
reference emplace_back(const T1 &value1)
Definition vector.h:499
vector(TIterator first, TIterator last, typename etl::enable_if<!etl::is_integral< TIterator >::value, int >::type=0)
Definition vector.h:1611
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1551
vector_ext(void *buffer, size_t max_size)
Constructor.
Definition vector.h:1715
vector_ext & operator=(const vector_ext &rhs)
Assignment operator.
Definition vector.h:1482
void repair_buffer(T *p_buffer_)
Fix the internal pointers after a low level memory copy.
Definition vector.h:1062
vector(const vector &other)
Copy constructor.
Definition vector.h:1631
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1674
void fill(const T &value)
Fills the vector.
Definition vector.h:430
bool full() const
Definition vector.h:1008
vector_ext(const vector_ext &other, void *buffer, size_t max_size)
Copy constructor.
Definition vector.h:1473
reference emplace_back()
Definition vector.h:483
pointer p_end
Definition vector.h:1070
vector(size_t initial_size)
Definition vector.h:1585
size_type size() const
Definition vector.h:990
iterator erase(iterator i_element)
Definition vector.h:890
void repair()
Fix the internal pointers after a low level memory copy.
Definition vector.h:1832
void insert(const_iterator position, size_t n, parameter_t value)
Definition vector.h:778
bool empty() const
Definition vector.h:999
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:337
~vector()
Destructor.
Definition vector.h:1360
ETL_CONSTEXPR const_pointer data() const
Definition vector.h:374
reference back()
Definition vector.h:345
void uninitialized_resize(size_t new_size)
Definition vector.h:246
size_t available() const
Definition vector.h:1017
vector()
Constructor.
Definition vector.h:1235
iterator emplace(const_iterator position, const T1 &value1)
Emplaces a value to the vector at the specified position.
Definition vector.h:659
vector_ext(const vector_ext &other, void *buffer, size_t max_size)
Construct a copy.
Definition vector.h:1771
void reserve(size_t n)
Definition vector.h:269
vector & operator=(const vector &rhs)
Assignment operator.
Definition vector.h:1300
reverse_iterator rbegin()
Definition vector.h:153
const_reference front() const
Definition vector.h:335
iterator insert(const_iterator position, const_reference value)
Definition vector.h:576
reference emplace_back(const T1 &value1, const T2 &value2, const T3 &value3)
Definition vector.h:531
vector_ext(const vector_ext &other) ETL_DELETE
Copy constructor (Deleted).
void resize(size_t new_size)
Definition ivectorpointer.h:188
Definition vector_base.h:122
Definition vector_base.h:80
Template deduction guides.
Definition vector.h:1411
Definition vector_base.h:66
Definition vector_base.h:108
Definition vector_base.h:94
bitset_ext
Definition absolute.h:39
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1190
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1202
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1151
etl::ivector< T >::difference_type erase(etl::ivector< T > &v, const U &value)
erase
Definition vector.h:1844
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1139
void destroy(const T *const p)
Destroys the object.
Definition variant_pool_generator.h:370
etl::ivector< T >::difference_type erase_if(etl::ivector< T > &v, TPredicate predicate)
erase_if
Definition vector.h:1858
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1163
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1178
iterator
Definition iterator.h:399
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:48