Skip to content

fanoxiz/Cpp-structures

Repository files navigation

unordered_map.h

STL-совместимая реализация UnorderedMap<Key, Value, Hash, Equal, Alloc> на C++17
Поддерживает почти весь интерфейс std::unordered_map

Для внутренней архитектуры таблицы выбрана реализация из flat iteration (модифицированный вариант MSVC STL):

  • Единый двусвязный список хранит все ноды, по нему ходят итераторы
  • Вектор корзин хранит итераторы на начало цепочки коллизий внутри этого списка

Так достигается удаление за $O(1)$ и $O(N)$ обход вне зависимости от load factor

Реализовано:

  • Strong exception guarantee и SFINAE-совместимый итератор
  • Интеграция std::allocator_traits с поддержкой политик POCCA, POCMA, POCS
  • Empty base optimisation для аллокаторов и компараторов
  • Кэширование хэшей внутри узлов для ускорения rehash-а и разрешения коллизий

circular_buffer.h

STL-совместимая реализация CircularBuffer<T, Capacity> на C++17
Универсальный контейнер, поддерживающий как статическую, так и динамическую аллокацию памяти. Семантика как у кольцевого буфера - при переполнении вытесняется самый старый элемент

Реализовано:

  • Compile time диспетчеризация - нулевой runtime overhead
  • Архитектура построена поверх сырой памяти для работы с типами без конструкторов по умолчанию
  • Strong exception guarantee для всех операций
  • SFINAE совместимый RandomAccess итератор с EBO

smart_pointers.h

STL-совместимая реализация счетчиков ссылок SharedPtr<T>, WeakPtr<T> и EnableSharedFromThis<T> на C++17
Архитектура построена с Type Erasure

Реализовано:

  • Безопасная иерархия классов, SFINAE-ограничения приведения типов
  • Поддержка пользовательских аллокаторов с Strong exception guarantee
  • EnableSharedFromThis

biginteger.h

Библиотека для работы с длинными числами и рациональными дробями любой точности на C++17

Реализовано:

  • Хранение числе в системе с основанием $10^9$ для оптимизации
  • Алгоритмы теории чисел, оптимальные алгоритмы для арифметических операций

string.h

Реализация C-style строки на C++11
Поддерживает почти итераторы, все основные методы std::string, перегружены необходимые операторы


geometry.h

Библиотека для 2D геометрии на C++17
В основе иерархия наследования с абстрактным базовым классом, который определяет общий контракт для остальных фигур

Реализовано:

  • Поддержка аффинных преобразований: вращение, симметрия, масштабирование
  • Продвинутые методы для треугольника, в т.ч. ортоцентр, центроид, линия Эйлера, окружность Эйлера
  • Полиморфное сравнение фигур на конгруэнтность, подобие

stackallocator.h

STL-совместимая реализация двусвязного списка List<T, Alloc> на C++17, и аллокатор на стеке
Для внутренней архитектуры используется топология кольца и 1 фиктивная нода

Реализовано:

  • Интеграция std::allocator_traits с поддержкой политик POCCA, POCMA, POCS
  • Strong exception guarantee для всех методов связного списка
  • SFINAE совместимый Bidirectional итератор с EBO

About

Реализации структур из STL и сторонних библиотек

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages