Разреженный матричный дизайн в современном C++
Я хочу реализовать класс разреженных матриц с использованием современного C++, то есть 14 или 17. Я знаю, что должны быть некоторые компромиссы между хранением и эффективностью во время выполнения. Прямо сейчас я предпочел бы оптимизировать больше с точки зрения эффективности хранения. Если возможно, я бы предпочел, чтобы больше работы выполнялось во время компиляции, а не во время выполнения. Например, вектор имеет много проверок во время выполнения, поэтому он может быть неоптимальным. Может кто-нибудь предложить контейнер для этого? Я планирую поддерживать следующие операции:
Matrix Multiplication, Addition, Subtraction, Inversion and Transpose
Matrix iterators ie column row
Efficient constructors
etc
Спасибо!