Я бы выбрал ваш последний вариант, один большой массив с преобразованными индексами.Если все, что вам нужно, - это читать и записывать известные индексы, это, вероятно, самая эффективная структура, как с точки зрения хранения, так и скорости.Вы также можете заключить это в класс и перегрузить operator ()
, чтобы упростить доступ к трехмерным координатам, например.вы могли бы написать a(1,2,3) = 10;
, и перегруженный оператор мог бы преобразовать трехмерные координаты в линейный индекс.Итерирование по такому массиву также будет довольно простым, поскольку есть только одно измерение.