Я пытаюсь создать массив массивов в Fortran.
Что-то вроде следующего
TYPE :: array_of_arrays
REAL, DIMENSION(:), POINTER :: p => NULL()
END TYPE
TYPE(array_of_arrays), DIMENSION(2) :: some_array
Чтобы я мог сделать:
REAL, DIMENSION(3), TARGET :: some_vector1 = (/1.0, 2.1, 4.3/)
REAL, DIMENSION(3), TARGET :: some_vector2 = (/3.0, 1.2, 9.6/)
some_array(1)%p => some_vector1
some_array(2)%p => some_vector2
WRITE(*,*) some_array(1)%p ! I see some_vector1
WRITE(*,*) some_array(2)%p ! I see some_vector2
Теперь мне сложно объявить каждый из этих some_vector
массивов соответствующим каждому элементу в моем массиве массивов.
То, что я хотел бы сделать, это иметь в отдельной подпрограмме, где временный вектор установлен в качестве цели, и эта подпрограмма устанавливает мой массив массивов, чтобы указать на этот временный вектор.
Таким образом, я могу иметь анонимные массивы.
Однако это, похоже, не работает, и мне интересно, если я сначала делаю что-то, что Fortran не поддерживает.
Так поддерживает ли Fortran анонимные массивы, то есть (на случай, если я ошибаюсь в терминах), массив, к которому можно получить доступ только через ссылку?