Для студентов МГТУ им. Н.Э.Баумана по предмету Основы программирования на C++С++ ИУ8 ЛР5: стекС++ ИУ8 ЛР5: стек
2021-05-302021-05-30СтудИзба
ДЗ: С++ ИУ8 ЛР5: стек
Описание
# Лабораторная работа №5
## Задание 1
Реализовать некопируемый перемещаемый шаблон класса **stack** с методами `pop`, `push`, `head`.
```cpp
template <typename T>
class stack
{
public:
void push(T&& value);
void push(const T& value);
void pop();
const T& head() const;
};
```
⚠️ *Стандартными контейнерами пользоваться **запрещено**.*
## Задание 2
Реализовать некопируемый перемещаемый шаблон класса **stack** для некопируемых перемещаемых типов с методами:
* `push_emplace`, принимающего те же аргументы, что и конструктор для `T`, где `T` - пареметр шаблона;
* `head`, возвращающего ссылку на верхушку стека;
* `pop`, выполняющего снятие элемента с верхушки стека.
```cpp
template <typename T>
class stack
{
public:
template <typename ... Args>
void push_emplace(Args&&... value);
void push(T&& value);
const T& head() const;
T pop();
};
```
⚠️ *Стандартными контейнерами пользоваться **запрещено**.*
## Задание 3
Реализовать **unit-test**'ы с использованием фреймворка **Google Test** для реализованных шаблонов в заданиях 1 и 2.
## Рекомендации
Характеристики домашнего задания
Учебное заведение
Семестр
Просмотров
36
Размер
43,26 Kb
Список файлов
README.md
clion-environment.txt
clion-log.txt
CMakeCache.txt
CMakeLists.txt
Комментарии
Сопутствующие материалы
Домашнее задание №1 (вариант №13)
Домашнее задание №1
Домашнее задание №2
Задачи на c++ (бин. дерево, стек, ...)
ЛР №1 - Парсер
С++ ИУ8 ЛР2: кэш
Вы можете использовать домашнюю работу для примера, а также можете ссылаться на неё в своей работе. Авторство принадлежит автору работы, поэтому запрещено копировать текст из этой работы для любой публикации, в том числе в свою домашнюю работу в учебном заведении, без правильно оформленной ссылки. Читайте как правильно публиковать ссылки в своей работе.