/
Xakka
/
CPP2
Обзор
Документация
Войти
/
Xakka
/
CPP2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/s21_stack.tpp
81 строка
2 KB
moshedur
master: release 1.0
04 янв 2025, 23:35
04 янв 2025, 23:35
1c45f0a
Код
Авторство
О чём код?
#include "s21_stack.h" namespace s21 { /** * Конструктор по умолчанию, создает пустой стек * @tparam value_type тип хранимых данных */ template <typename value_type> s21_stack<value_type>::s21_stack() {} /** * Конструктор на базе списке инициализации * @tparam value_type тип хранимых данных * @param items указатель на список инициализаторов */ template <typename value_type> s21_stack<value_type>::s21_stack(std::initializer_list<value_type> const &items) : s21_queue<value_type>::s21_queue(items) {} template <typename value_type> s21_stack<value_type> &s21_stack<value_type>::operator=( const s21_stack<value_type> &q) { return reinterpret_cast<s21_stack<value_type> &>( s21_queue<value_type>::operator=(q)); } template <typename value_type> s21_stack<value_type> &s21_stack<value_type>::operator=( s21_stack<value_type> &&q) noexcept { return reinterpret_cast<s21_stack<value_type> &>( s21_queue<value_type>::operator=(std::move(q))); } /** * Доступ к первому элементу * @tparam value_type тип хранимых данных * @return указатель на элемент */ template <typename value_type> typename s21_stack<value_type>::const_reference s21_stack<value_type>::top() { return s21_queue<value_type>::back(); } /** * Удаляет первый элемент * @tparam value_type тип хранимых данных */ template <typename value_type> void s21_stack<value_type>::pop() { if (this->m_node) { typename s21_queue<value_type>::Node *tmp = this->m_node->tail; if (tmp->prev) { tmp->prev->next = nullptr; this->m_node->tail = tmp->prev; } else { tmp = this->m_node; this->m_node = nullptr; } delete tmp; this->m_size--; } else { throw std::out_of_range("Node does not exist"); } } /** * Добавляет новые элементы в начало стэка * @tparam value_type тип хранимых данных * @param args * @param ... */ template <typename value_type> template <typename... Args> void s21_stack<value_type>::insert_many_front(Args &&...args) { return s21_queue<value_type>::insert_many_back(args...); } } // namespace s21 template class s21::s21_stack<int>;