No description
- C++ 98.9%
- CMake 1.1%
| src | update bit sequence | |
| tests | major refactor | |
| .clang-format | initial commit | |
| .gitignore | initial commit | |
| CMakeLists.txt | update bit sequence | |
| main.cpp | major refactor | |
| README.md | add readme | |
ЛР-2. Полиморфные линейные АТД на C++
Система линейной организации данных: динамический массив, связный список и
последовательность (mutable/immutable, на основе массива и списка), а также
битовая последовательность BitSequence с упакованным хранением (8 бит на байт).
Структура
src/
dynamic_array.{hpp,tpp} DynamicArray<T>
linked_list.{hpp,tpp} LinkedList<T>
sequence.{hpp,tpp} Sequence<T> + map/reduce/where/flat_map/slice/split/zip/unzip
array_sequence.{hpp,tpp} Mutable/ImmutableArraySequence<T>
list_sequence.{hpp,tpp} Mutable/ImmutableListSequence<T>
bit_sequence.{hpp,tpp} BitSequence : Sequence<Bit> (упакованное хранилище)
option.{hpp,tpp} Option<T> и try-семантика
pair.{hpp,tpp} Pair<T1,T2> (для zip/unzip)
i_enumerable.hpp IEnumerable<T>
i_enumerator.hpp IEnumerator<T>
main.cpp консольный интерфейс (TUI)
tests/ модульные тесты (GoogleTest)
Требования
- CMake ≥ 3.14
- Компилятор с поддержкой C++20 (GCC 10+, Clang 12+)
- Доступ в интернет при первой сборке (GoogleTest скачивается через FetchContent)
Сборка и запуск
Через make (обёртка над CMake):
make # сконфигурировать и собрать
make menu # собрать и запустить консольный интерфейс
make tests # собрать и прогнать тесты
make clean # удалить каталог build
Либо напрямую через CMake:
cmake -S . -B build
cmake --build build -j
./build/menu # консольный интерфейс
./build/tests # модульные тесты
Тесты
ctest --test-dir build --output-on-failure
# либо
./build/tests --gtest_filter=SuiteName.TestName