ZiMatLib предоставляет шаблон zimat::matrix<T> с настраиваемой базой индексации, арифметикой, транспонированием, статистическими методами и вычислением определителя для матриц до третьего порядка.
- Непрерывное хранение элементов в порядке строк (row-major).
- Доступ к элементам с индексами от
0,1или другой заданной базы. - Сложение, вычитание и матричное умножение, умножение и деление на скаляр.
- Транспонирование, сумма, минимумы и максимумы, проверки матрицы.
- Определитель для квадратных матриц
1 × 1,2 × 2и3 × 3.
Нужен компилятор с поддержкой C++17. Библиотека подключается через заголовочный файл:
#include <zimat/zimat.hpp>При использовании CMake подключите репозиторий как поддиректорию:
add_subdirectory(path/to/ZiMatLib)
target_link_libraries(my_app PRIVATE zimat)Цель zimat — INTERFACE; отдельная сборка библиотеки не нужна.
#include <zimat/zimat.hpp>
#include <iostream>
int main() {
zimat::matrix<int> a(2, 2);
a(1, 1) = 1; a(1, 2) = 2;
a(2, 1) = 3; a(2, 2) = 4;
auto transposed = a.transpose();
auto doubled = a * 2;
std::cout << transposed(1, 2) << '\n'; // 3
std::cout << doubled(2, 2) << '\n'; // 8
}По умолчанию индексация начинается с 1. Чтобы начать с 0, передайте 0 третьим аргументом конструктора: zimat::matrix<int> a(2, 2, 0);.
cmake -S . -B build
cmake --build buildПолное описание публичных методов, исключений и ограничений реализации: документация.
Проект распространяется по лицензии, указанной в файле LICENSE.