Возможно ли в современном Fortran использовать вектор для индексации многомерного массива? То есть, учитывая, скажем,
integer, dimension(3) :: index = [4,6,9]
double precision, dimension(10,10,10) :: data
есть ли лучший (более общий) способ доступа к data(4,6,9)
, чем писать data(index(1), index(2), index(3))
? Было бы неплохо не жестко закодировать ранг массива data
.
(Наивно я хотел бы написать data(index)
, но, конечно, это на самом деле означает что-то другое - подмножество "сбор" - требуя, чтобы data
был массивом ранга один.)
Для чего это стоит, по сути, такой же вопрос, как многомерный индекс по массиву индексов в JavaScript, но вместо этого в Fortran. К сожалению, умные ответы там не будут работать с предопределенными рядами.