Федеральное государственное бюджетное образовательное учреждение высшего образования
«Сибирский государственный университет телекоммуникаций и информатики»
(СибГУТИ)

Кафедра вычислительных систем

Расчетно-графическая работа

по дисциплине «Современные технологии программирования»

на тему «Реализация шаблонного типа данных LinkedList»

Выполнил:

ст. гр. ИВ-911

Константинопольский И. О.

Проверил:

ст. пр. Пименов Е. С.

Содержание

1. Постановка задачи	3

2. Мотивация	4

3. Реализация	5

3.1 Внутреннее устройство	5

3.2 Интерфейс	5

3.3 Итераторы	5

4. Список источников	6

5. Приложение	7

Постановка задачи

Спроектировать шаблонный тип данных LinkedList. Использовать стандарт языка С⁠+⁠+⁠17. Реализовать итераторы, совместимые с алгоритмами стандартной библиотеки. Покрыть модульными тестами. При реализации не пользоваться контейнерами стандартной библиотеки, реализовать управление ресурсами в идиоме RAII.

В качестве системы сборки использовать CMake. Структурировать проект в соответствии с соглашениями Canonical Project Structure [1]. Всю разработку вести в системе контроля версий git. Настроить автоматическое форматирование средствами clang-format.

Проверить код анализаторами Valgrind Memcheck, undefined sanitizer, address sanitizer, clang-tidy.

Мотивация

В этом разделе опишите необходимость вашей структуры данных: какими ключевыми свойствами она обладает и для каких задач подходит лучше в сравнении с другими похожими типами.

Реализация

Внутреннее устройство

Опишите внутреннее устройство реализованной структуры данных. Приветствуются диаграммы, см. рисунок 3.1.

Рисунок 3.1: Структура двусвязного списка

Интерфейс

Опишите операции, доступные через публичный интерфейс. Укажите их асимптотическую сложность и влияние на итераторы.

Итераторы

Какие итераторы предоставляет ваша структура данных? Категория, особенности реализации.

Список источников

1. Kolpackov B. Canonical Project Structure [Электронный ресурс]. URL: https://open-std.org/JTC1/SC22/WG21/docs/papers/2018/p1204r0.html (дата обращения: 07.05.2022).

Приложение

// file libcsc/libcsc/LinkedList.hpp

#pragma once

template <typename T>

class LinkedList {

public:

class Iterator {

public:

using iterator_category = std::?;

};

LinkedList() {}

~LinkedList() {}

private:

};