1
0
Fork
You've already forked sem-2-lab-2
0
No description
  • C++ 98.9%
  • CMake 1.1%
Find a file
2026年07月01日 08:59:12 +03:00
src update bit sequence 2026年07月01日 08:59:12 +03:00
tests major refactor 2026年07月01日 07:30:21 +03:00
.clang-format initial commit 2026年06月17日 17:10:35 +03:00
.gitignore initial commit 2026年06月17日 17:10:35 +03:00
CMakeLists.txt update bit sequence 2026年07月01日 08:59:12 +03:00
main.cpp major refactor 2026年07月01日 07:30:21 +03:00
README.md add readme 2026年07月01日 08:28:15 +03:00

ЛР-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