4#include "containerAdapter.h"
9 template<
typename TYPE,
template <
typename>
typename SERIAL =
chain>
10 class queue final :
public containerAdapter<TYPE, SERIAL> {
12 explicit queue(
const SERIAL<TYPE>&
serial = SERIAL<TYPE>{});
13 queue(
const std::initializer_list<TYPE>& lst);
14 queue(
const queue& other);
15 queue& operator=(
const queue& other);
16 queue(queue&& other)
noexcept;
17 queue& operator=(queue&& other)
noexcept;
18 bool operator==(
const queue& other)
const;
19 void push(
const TYPE& e);
23 [[nodiscard]] std::string className()
const override;
27 template<
typename TYPE,
template <
typename>
typename SERIAL>
28 original::queue<TYPE, SERIAL>::queue(
const SERIAL<TYPE>& serial)
29 : containerAdapter<TYPE, SERIAL>(serial) {}
31 template<
typename TYPE,
template <
typename>
typename SERIAL>
32 original::queue<TYPE, SERIAL>::queue(
const std::initializer_list<TYPE> &lst)
33 :
queue(SERIAL<TYPE>(lst)) {}
35 template<
typename TYPE,
template <
typename>
typename SERIAL>
36 original::queue<TYPE, SERIAL>::queue(
const queue& other)
39 template<
typename TYPE,
template <
typename>
typename SERIAL>
40 auto original::queue<TYPE, SERIAL>::operator=(
const queue& other) ->
queue& {
41 if (
this == &other)
return *
this;
42 this->serial_ = other.serial_;
46 template<
typename TYPE,
template <
typename>
typename SERIAL>
47 auto original::queue<TYPE, SERIAL>::operator==(
const queue& other)
const ->
bool {
48 return this->serial_ == other.serial_;
51 template <
typename TYPE,
template <
typename>
class SERIAL>
52 original::queue<TYPE, SERIAL>::queue(
queue&& other) noexcept :
queue()
54 this->operator=(std::move(other));
57 template <
typename TYPE,
template <
typename>
class SERIAL>
58 auto original::queue<TYPE, SERIAL>::operator=(
queue&& other)
noexcept ->
queue&
63 this->serial_ = std::move(other.serial_);
64 other.serial_ = SERIAL<TYPE>{};
68 template<
typename TYPE,
template <
typename>
typename SERIAL>
69 auto original::queue<TYPE, SERIAL>::push(
const TYPE& e) ->
void {
70 this->serial_.pushEnd(e);
73 template<
typename TYPE,
template <
typename>
typename SERIAL>
74 auto original::queue<TYPE, SERIAL>::pop() -> TYPE {
75 return this->serial_.popBegin();
78 template<
typename TYPE,
template <
typename>
typename SERIAL>
79 auto original::queue<TYPE, SERIAL>::head() const -> TYPE {
80 return this->serial_.getBegin();
83 template<
typename TYPE,
template <
typename>
typename SERIAL>
84 auto original::queue<TYPE, SERIAL>::tail() const -> TYPE {
85 return this->serial_.getEnd();
88 template<
typename TYPE,
template <
typename>
typename SERIAL>
89 std::string original::queue<TYPE, SERIAL>::className()
const {
Definition containerAdapter.h:10