17 #ifndef IOX_UTILS_CXX_VECTOR_HPP
18 #define IOX_UTILS_CXX_VECTOR_HPP
32 template <
typename T, u
int64_t Capacity>
39 using const_iterator =
const T*;
47 vector(const uint64_t count, const T& value) noexcept;
51 vector(const uint64_t count) noexcept;
76 iterator
begin() noexcept;
81 const_iterator
begin() const noexcept;
85 iterator
end() noexcept;
89 const_iterator
end() const noexcept;
97 const T*
data() const noexcept;
101 T&
at(const uint64_t index) noexcept;
105 const T&
at(const uint64_t index) const noexcept;
109 T& operator[](const uint64_t index) noexcept;
113 const T& operator[](const uint64_t index) const noexcept;
121 const T&
front() const noexcept;
129 const T&
back() const noexcept;
137 uint64_t
size() const noexcept;
140 bool empty() const noexcept;
143 void clear() noexcept;
154 template <typename... Targs>
155 bool resize(const uint64_t count, const Targs&... args) noexcept;
160 template <typename... Targs>
161 bool emplace(const uint64_t position, Targs&&... args) noexcept;
165 template <typename... Targs>
183 iterator
erase(iterator position) noexcept;
186 using element_t = uint8_t[sizeof(T)];
187 alignas(T) element_t m_data[Capacity];
188 uint64_t m_size = 0u;
193 template <typename T, uint64_t CapacityLeft, uint64_t CapacityRight>
194 bool operator==(const
iox::cxx::
vector<T, CapacityLeft>& lhs, const
iox::cxx::
vector<T, CapacityRight>& rhs) noexcept;
196 template <typename T, uint64_t CapacityLeft, uint64_t CapacityRight>
197 bool operator!=(const
iox::cxx::
vector<T, CapacityLeft>& lhs, const
iox::cxx::
vector<T, CapacityRight>& rhs) noexcept;
199 #include "iceoryx_utils/internal/cxx/vector.inl"
C++11 compatible vector implementation. We needed to do some adjustments in the API since we do not u...
Definition: vector.hpp:34
bool push_back(const T &value) noexcept
appends the given element at the end of the vector
Definition: vector.inl:201
T & front() noexcept
returns a reference to the first element; terminates if the vector is empty
Definition: vector.inl:292
T * data() noexcept
return the pointer to the underlying array
Definition: vector.inl:250
void clear() noexcept
calls the destructor of all contained elements and removes them
Definition: vector.inl:157
bool emplace_back(Targs &&... args) noexcept
forwards all arguments to the constructor of the contained element and performs a placement new at th...
Definition: vector.inl:166
iterator end() noexcept
returns an iterator to the element which comes after the last element (the first element which is out...
Definition: vector.inl:348
bool pop_back() noexcept
removes the last element of the vector; calling pop_back on an empty container does nothing
Definition: vector.inl:213
vector() noexcept=default
creates an empty vector
T & at(const uint64_t index) noexcept
returns a reference to the element stored at index. the behavior
Definition: vector.inl:262
bool resize(const uint64_t count, const Targs &... args) noexcept
resizes the vector. If the vector size increases new elements will be constructed with the given argu...
Definition: vector.inl:225
iterator begin() noexcept
returns an iterator to the first element of the vector, if the vector is empty it returns the same it...
Definition: vector.inl:336
iterator erase(iterator position) noexcept
removes an element at the given position. if this element is in the middle of the vector every elemen...
Definition: vector.inl:360
uint64_t size() const noexcept
returns the number of elements which are currently stored in the vector
Definition: vector.inl:145
bool emplace(const uint64_t position, Targs &&... args) noexcept
forwards all arguments to the constructor of the contained element and performs a placement new at th...
Definition: vector.inl:178
uint64_t capacity() const noexcept
returns the capacity of the vector which was given via the template argument
Definition: vector.inl:151
T & back() noexcept
returns a reference to the last element; terminates if the vector is empty
Definition: vector.inl:314
bool empty() const noexcept
returns true if the vector is emtpy, otherwise false
Definition: vector.inl:139
building block to easily create free function for logging in a library context
Definition: lockfree_queue.hpp:28