Если ваша трехмерная матрица будет малонаселенной (то есть в основном нулями), тогда вас заинтересует boost::ublas::sparse_matrix
. Если я правильно помню, по умолчанию он использует std::map
в качестве основного контейнера. Он предоставляет операторы для легкой индексации строк / столбцов (а также итераторы строк / столбцов / элементов).
РЕДАКТИРОВАТЬ: Неважно, я думал, что Boost :: Ublas были 3D-матрицы. Кажется, что нет. Также кажется, что sparse_matrix
был заменен новыми типами матриц, имеющими разреженную память. Я давно не пользовался этой библиотекой.
Вы все еще можете взглянуть на Boost.uBlas, чтобы вдохновиться на создание своей собственной разреженной трехмерной матрицы.