Skip to content

Shinote1552/cpp_containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

cpp_containers

О проекте

Основная цель проекта - изучение принципов работы стандартных контейнеров C++ через их самостоятельную реализацию. В процессе разработки сознательно принимались некоторые неоптимальные решения там, где это способствовало лучшему пониманию внутренней механики STL.

Ключевые аспекты:

  • Учебный характер реализации
  • Акцент на понятность кода в ущерб максимальной оптимизации
  • Эксперименты с различными подходами к реализации
  • Подробные комментарии для объяснения сложных мест
  • Командная работа в группе из 4 человек

Проект представляет собой полный цикл разработки - от проектирования классов до тестирования и небольших оптимизаций, что позволило комплексно изучить работу контейнеров стандартной библиотеки.

Распределение задач

vegaklin

  • vector
  • array
  • list

tandronaki

  • queue
  • stack

edmurepi

  • binary_tree (база)
  • set
  • multiset
  • map

dominnya

  • тесты
  • проверка памяти
  • Makefile

Реализованные контейнеры

Основные контейнеры (s21_containers.h)

  • List: Двусвязный список
  • Map: Ассоциативный массив на AWL-дереве
  • Queue: FIFO Очередь (адаптер над list)
  • Set: Множество уникальных элементов
  • Stack: Стек LIFO (адаптер над list)
  • Vector: Динамический массив

Дополнительные контейнеры (s21_containersplus.h)

  • Array: Статический массив фиксированного размера
  • Multiset: Множество с дубликатами

Особенности реализации

AWL-дерево (Map/Set/Multiset)

  • Гибридная балансировка:
    • При вставке: жадный алгоритм без балансировки
    • При удалении: полная балансировка дерева

Общие особенности

  • Полная поддержка STL-интерфейсов
  • Реализация всех обязательных методов
  • Поддержка move-семантики
  • Итераторы для всех контейнеров

Система сборки и тестирование

Требования

  • Компилятор с поддержкой C++17 (GCC)
  • Google Test для тестов
  • LCOV для генерации отчетов покрытия
  • Valgrind для проверки утечек памяти
  • Тестировалось на Linux (GCC) macOS(GCC)

Основные команды Makefile

make test        # Сборка и запуск всех тестов
make gcov_report # Генерация отчета о покрытии кода
make valgrind    # Проверка на утечки памяти
make style_check # Проверка стиля кода
make clean       # Очистка проекта

About

s21_containers. Basic c++ containers realization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages