РГР
Загрузка отчета
Курс в ЭИОС: https://eios.sibsutis.ru/course/view.php?id=2280
Кодовое слово: cpp-XX-YYY, где XX-YYY — группа. Например: cpp-IV-121
Цель
Реализовать шаблон класса для структуры данных в соответствии со своим вариантом. Реализовать итераторы, совместимые с алгоритмами стандартной библиотеки. Покрыть тестами.
Считаем, что вы полностью реализуете управление ресурсами, поэтому внутри классов не используйте контейнеры стандартной библиотеки.
Для выполнения работы создан репозиторий с префиксом rgr:
cpp2023
Вариантов немного, поэтому возможны повторы: не более двух человек на одном варианте в пределах группы. При этом работа остается индивидуальной.
Шаблон отчета
Шаблон подготовлен в LibreOffice и может некорректно отображаться в MS Office, обращайте внимание на артефакты.
Для оформления используйте стили (Heading 2, Heading 3, First Line Indent, preformatted text и др., см. шаблон).
Выделенные фрагменты — точки кастомизации. После вписывания своего текста уберите выделение.
В списке источников указывайте все использованные материалы, в т.ч. ссылки на блоги, youtube, онлайн курсы и ответы на stackoverflow. Для управления списком источников и ссылками можете использовать Zotero.
Варианты
FlatMap
FlatSet
HashMap (открытая адресация)
HashSet (открытая адресация)
HashMap (метод цепочек)
HashSet (метод цепочек)
TreeMap
TreeSet
SmallVector — вектор с дополнительным параметром N (количество элементов, хранимых на стеке).
Graph
Matrix
Vector + COW
String + COW
StableVector — вектор со стабильными итераторами/указателями на элементы.
PackedVector — вектор, использующий для хранения одного элемента N заданных бит.
Для всех типов, управляющих ресурсами нужно реализовать пять специальных методов.
Для последовательных контейнеров нужно реализовать методы:
operator[]
at
resize, reserve
begin, end, rbegin, rend
empty
size, capactiy
shrink_to_fit
insert
push_back
erase
Для ассоциативных контейнеров:
operator[]
at
begin, end,
rbegin, rend (если допускает категория итератора)
empty
insert
insert_or_assign
erase
find
contains
Для множеств:
begin, end,
rbegin, rend (если допускает категория итератора)
empty
insert
merge
erase
find
contains
Возможные проблемы
Задание предполагает самостоятельное исследование: в чем особенности выбранной структуры данных. Если вы впервые показываете работу в последний момент или после срока, могут появиться неожиданные замечания вплоть до полного несоответствия реализации ожиданиям. Это скажется на оценке, и времени на исправления не останется.