STL-совместимая реализация UnorderedMap<Key, Value, Hash, Equal, Alloc> на C++17
Поддерживает почти весь интерфейс std::unordered_map
Для внутренней архитектуры таблицы выбрана реализация из flat iteration (модифицированный вариант MSVC STL):
- Единый двусвязный список хранит все ноды, по нему ходят итераторы
- Вектор корзин хранит итераторы на начало цепочки коллизий внутри этого списка
Так достигается удаление за
Реализовано:
- Strong exception guarantee и SFINAE-совместимый итератор
- Интеграция
std::allocator_traitsс поддержкой политик POCCA, POCMA, POCS - Empty base optimisation для аллокаторов и компараторов
- Кэширование хэшей внутри узлов для ускорения rehash-а и разрешения коллизий
STL-совместимая реализация CircularBuffer<T, Capacity> на C++17
Универсальный контейнер, поддерживающий как статическую, так и динамическую аллокацию памяти. Семантика как у кольцевого буфера - при переполнении вытесняется самый старый элемент
Реализовано:
- Compile time диспетчеризация - нулевой runtime overhead
- Архитектура построена поверх сырой памяти для работы с типами без конструкторов по умолчанию
- Strong exception guarantee для всех операций
- SFINAE совместимый
RandomAccessитератор с EBO
STL-совместимая реализация счетчиков ссылок SharedPtr<T>, WeakPtr<T> и EnableSharedFromThis<T> на C++17
Архитектура построена с Type Erasure
Реализовано:
- Безопасная иерархия классов, SFINAE-ограничения приведения типов
- Поддержка пользовательских аллокаторов с Strong exception guarantee
EnableSharedFromThis
Библиотека для работы с длинными числами и рациональными дробями любой точности на C++17
Реализовано:
- Хранение числе в системе с основанием
$10^9$ для оптимизации - Алгоритмы теории чисел, оптимальные алгоритмы для арифметических операций
Реализация C-style строки на C++11
Поддерживает почти итераторы, все основные методы std::string, перегружены необходимые операторы
Библиотека для 2D геометрии на C++17
В основе иерархия наследования с абстрактным базовым классом, который определяет общий контракт для остальных фигур
Реализовано:
- Поддержка аффинных преобразований: вращение, симметрия, масштабирование
- Продвинутые методы для треугольника, в т.ч. ортоцентр, центроид, линия Эйлера, окружность Эйлера
- Полиморфное сравнение фигур на конгруэнтность, подобие
STL-совместимая реализация двусвязного списка List<T, Alloc> на C++17, и аллокатор на стеке
Для внутренней архитектуры используется топология кольца и 1 фиктивная нода
Реализовано:
- Интеграция
std::allocator_traitsс поддержкой политик POCCA, POCMA, POCS - Strong exception guarantee для всех методов связного списка
- SFINAE совместимый Bidirectional итератор с EBO