Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 Vector — кастомная реализация динамического массива на C++17

📖 О проекте

Vector — это учебная реализация шаблонного контейнера, аналогичного std::vector, написанная на C++17 с нуля, без использования стандартных контейнеров STL. Проект демонстрирует глубокое понимание управления памятью, итераторов, семантики перемещения, обработки исключений и алгоритмов.

Реализация ориентирована на:

  • Эффективность — минимальные накладные расходы, быстрый доступ по индексу.
  • Надёжность — строгая гарантия безопасности исключений (strong exception guarantee) для ключевых операций.
  • Совместимость — интерфейс максимально приближен к std::vector, что упрощает переход и сравнение.

✨ Возможности

  • Управление памятью через собственный класс RawMemory<T>, который выделяет и освобождает сырую память без инициализации объектов.
  • Итераторы произвольного доступа (совместимы с STL-алгоритмами).
  • Конструкторы:
    • по умолчанию;
    • от размера (с value-инициализацией);
    • копирования;
    • перемещения.
  • Операторы присваивания (копирующий и перемещающий) с оптимизацией повторного использования буфера.
  • Доступ к элементам через operator[] (без проверки границ) и at() (не реализован, но можно добавить).
  • Изменение размера:
    • PushBack / PopBack (вставка/удаление в конец).
    • Reserve — предварительное выделение памяти.
    • Resize — изменение количества элементов.
  • Вставка и удаление в произвольной позиции:
    • Insert (копирующий и перемещающий).
    • Emplace — создание элемента на месте с произвольными аргументами (perfect forwarding).
    • Erase — удаление элемента по итератору.
  • Исключительная безопасность:
    • При копировании/перемещении элементов используется стратегия, учитывающая noexcept-совместимость типов.
    • В случае ошибки состояние контейнера остаётся неизменным (где это возможно).

About

Продвинутая реализация вектора

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages