30 template <
typename TYPE,
31 template <
typename,
typename>
typename SERIAL = chain,
32 template <
typename>
typename ALLOC = allocator>
43 explicit deque(
const SERIAL<TYPE, ALLOC<TYPE>>&
serial = SERIAL<TYPE, ALLOC<TYPE>>{});
51 deque(
const std::initializer_list<TYPE>& lst);
131 [[nodiscard]] std::string
className()
const override;
135 template <
typename TYPE,
136 template <
typename,
typename>
typename SERIAL,
137 template <
typename>
typename ALLOC>
141 template <
typename TYPE,
142 template <
typename,
typename>
typename SERIAL,
143 template <
typename>
typename ALLOC>
145 :
deque(SERIAL<TYPE, ALLOC<TYPE>>(lst)) {}
147 template <
typename TYPE,
148 template <
typename,
typename>
typename SERIAL,
149 template <
typename>
typename ALLOC>
154 template <
typename TYPE,
155 template <
typename,
typename>
typename SERIAL,
156 template <
typename>
typename ALLOC>
158 if (
this == &other)
return *
this;
159 this->serial_ = other.serial_;
163 template <
typename TYPE,
164 template <
typename,
typename>
typename SERIAL,
165 template <
typename>
typename ALLOC>
168 this->operator=(std::move(other));
171 template <
typename TYPE,
172 template <
typename,
typename>
typename SERIAL,
173 template <
typename>
typename ALLOC>
179 this->serial_ = std::move(other.serial_);
183 template <
typename TYPE,
184 template <
typename,
typename>
typename SERIAL,
185 template <
typename>
typename ALLOC>
187 this->serial_.pushBegin(e);
190 template <
typename TYPE,
191 template <
typename,
typename>
typename SERIAL,
192 template <
typename>
typename ALLOC>
194 this->serial_.pushEnd(e);
197 template <
typename TYPE,
198 template <
typename,
typename>
typename SERIAL,
199 template <
typename>
typename ALLOC>
201 return this->serial_.popBegin();
204 template <
typename TYPE,
205 template <
typename,
typename>
typename SERIAL,
206 template <
typename>
typename ALLOC>
208 return this->serial_.popEnd();
211 template <
typename TYPE,
212 template <
typename,
typename>
typename SERIAL,
213 template <
typename>
typename ALLOC>
215 return this->serial_.getBegin();
218 template <
typename TYPE,
219 template <
typename,
typename>
typename SERIAL,
220 template <
typename>
typename ALLOC>
222 return this->serial_.getEnd();
225 template <
typename TYPE,
226 template <
typename,
typename>
typename SERIAL,
227 template <
typename>
typename ALLOC>
Non-cyclic doubly linked list implementation.
Adapter class that provides unified interface for various container types.
Definition containerAdapter.h:53
Double-ended queue container adapter.
Definition deque.h:33
TYPE popBegin()
Removes and returns front element.
Definition deque.h:200
deque(const SERIAL< TYPE, ALLOC< TYPE > > &serial=SERIAL< TYPE, ALLOC< TYPE > >{})
Constructs deque with specified underlying container and allocator.
Definition deque.h:138
std::string className() const override
Gets class name identifier.
Definition deque.h:228
TYPE tail() const
Accesses back element.
Definition deque.h:221
deque & operator=(const deque &other)
Copy assignment operator.
Definition deque.h:157
void pushBegin(const TYPE &e)
Inserts element at the front.
Definition deque.h:186
TYPE popEnd()
Removes and returns back element.
Definition deque.h:207
TYPE head() const
Accesses front element.
Definition deque.h:214
void pushEnd(const TYPE &e)
Inserts element at the back.
Definition deque.h:193
Abstract base class for sequential containers with index-based access.
Definition serial.h:34
Base class for container adapters with common interfaces.
Main namespace for the project Original.
Definition algorithms.h:21