12#include <initializer_list>
44 using Data = std::deque<T>;
87 d = std::move(
other.d);
148 T &
at(
size_t index) {
return d.at(index); }
151 const T &
at(
size_t index)
const {
return d.at(index); }
167 const T &
front()
const {
return d.front(); }
173 const T &
back()
const {
return d.back(); }
199 d.push_front(std::move(
value));
217 d.push_back(std::move(
value));
226 T val = std::move(d.front());
236 T val = std::move(d.back());
261 template <
typename Func>
263 for(
const auto &v : d) func(v);
Double-ended queue container wrapping std::deque.
Definition deque.h:37
Deque(const Deque &other)
Copy constructor.
Definition deque.h:65
friend bool operator!=(const Deque &lhs, const Deque &rhs)
Returns true if the deques differ.
Definition deque.h:273
void swap(Deque &other) noexcept
Swaps contents with another deque.
Definition deque.h:251
T & at(size_t index)
Returns a reference to the element at index with bounds checking.
Definition deque.h:148
ConstIterator begin() const noexcept
Returns a const iterator to the first element.
Definition deque.h:97
const T & at(size_t index) const
Returns a reference to the element at index with bounds checking.
Definition deque.h:151
std::deque< T > Data
Underlying std::deque storage type.
Definition deque.h:44
T & operator[](size_t index)
Returns a reference to the element at index without bounds checking.
Definition deque.h:158
Deque & operator=(const Deque &other)
Copy assignment operator.
Definition deque.h:80
typename Data::reverse_iterator RevIterator
Mutable reverse iterator.
Definition deque.h:56
const T & back() const
Returns a reference to the last element.
Definition deque.h:173
Iterator end() noexcept
Returns a mutable iterator to one past the last element.
Definition deque.h:106
ConstRevIterator constRevEnd() const noexcept
Returns a const reverse iterator to one before the first element.
Definition deque.h:139
size_t size() const noexcept
Returns the number of elements.
Definition deque.h:181
ConstIterator cend() const noexcept
Returns a const iterator to one past the last element.
Definition deque.h:112
T & front()
Returns a reference to the first element.
Definition deque.h:164
typename Data::iterator Iterator
Mutable forward iterator.
Definition deque.h:50
RevIterator rend() noexcept
Returns a mutable reverse iterator to one before the first element.
Definition deque.h:130
ConstIterator end() const noexcept
Returns a const iterator to one past the last element.
Definition deque.h:109
Deque(Deque &&other) noexcept
Move constructor.
Definition deque.h:68
typename Data::const_reverse_iterator ConstRevIterator
Const reverse iterator.
Definition deque.h:59
T popFromFront()
Removes and returns the first element.
Definition deque.h:225
ConstRevIterator crbegin() const noexcept
Returns a const reverse iterator to the last element.
Definition deque.h:124
T & back()
Returns a reference to the last element.
Definition deque.h:170
void pushToBack(T &&value)
Pushes an item onto the back of the deque (move overload).
Definition deque.h:216
ConstIterator constEnd() const noexcept
Returns a const iterator to one past the last element.
Definition deque.h:115
Iterator begin() noexcept
Returns a mutable iterator to the first element.
Definition deque.h:94
Deque & operator=(Deque &&other) noexcept
Move assignment operator.
Definition deque.h:86
ConstIterator cbegin() const noexcept
Returns a const iterator to the first element.
Definition deque.h:100
friend bool operator==(const Deque &lhs, const Deque &rhs)
Returns true if both deques have identical contents.
Definition deque.h:270
Deque(std::initializer_list< T > initList)
Constructs a deque from an initializer list.
Definition deque.h:74
void forEach(Func &&func) const
Calls func for every element.
Definition deque.h:262
const T & operator[](size_t index) const
Returns a reference to the element at index without bounds checking.
Definition deque.h:161
T popFromBack()
Removes and returns the last element.
Definition deque.h:235
RevIterator revBegin() noexcept
Returns a mutable reverse iterator to the last element.
Definition deque.h:121
ConstRevIterator crend() const noexcept
Returns a const reverse iterator to one before the first element.
Definition deque.h:136
void pushToBack(const T &value)
Pushes an item onto the back of the deque.
Definition deque.h:207
ConstRevIterator constRevBegin() const noexcept
Returns a const reverse iterator to the last element.
Definition deque.h:127
~Deque()=default
Destructor.
Deque()=default
Default constructor. Creates an empty deque.
RevIterator rbegin() noexcept
Returns a mutable reverse iterator to the last element.
Definition deque.h:118
const T & front() const
Returns a reference to the first element.
Definition deque.h:167
bool isEmpty() const noexcept
Returns true if the deque has no elements.
Definition deque.h:178
void pushToFront(const T &value)
Pushes an item onto the front of the deque.
Definition deque.h:189
typename Data::const_iterator ConstIterator
Const forward iterator.
Definition deque.h:53
void clear() noexcept
Removes all elements.
Definition deque.h:242
RevIterator revEnd() noexcept
Returns a mutable reverse iterator to one before the first element.
Definition deque.h:133
void pushToFront(T &&value)
Pushes an item onto the front of the deque (move overload).
Definition deque.h:198
ConstIterator constBegin() const noexcept
Returns a const iterator to the first element.
Definition deque.h:103
Dynamic array container wrapping std::vector.
Definition list.h:40
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
const T & value(const Result< T > &r)
Returns the value from a Result.
Definition result.h:56
#define PROMEKI_SHARED_FINAL(TYPE)
Macro for non-polymorphic native shared objects.
Definition sharedptr.h:88