2 番目の次元で長さが異なる配列を作成しようとしています。
A = 1 3 5 6 9
2 3 2
2 5 8 9
これは可能ですか?私はかなりの時間を費やしましたが、どちらの方法でも見つけることができません。
2 番目の次元で長さが異なる配列を作成しようとしています。
A = 1 3 5 6 9
2 3 2
2 5 8 9
これは可能ですか?私はかなりの時間を費やしましたが、どちらの方法でも見つけることができません。
はいといいえ。まずいいえ:
次のように宣言されたものなど、Fortran の適切な配列:
integer, dimension(3,3,4) :: an_array
またはこのように
integer, dimension(:,:,:,:), allocatable :: an_array
定期的です。各ディメンションには、エクステントが 1 つしかありません。
しかし、不規則な配列に独自の型を定義したい場合は、比較的簡単に定義できます。
type :: vector
integer, dimension(:), allocatable :: elements
end type vector
type :: ragged_array
type(vector), dimension(:), allocatable :: vectors
end type ragged_array
この種のアプローチではelements
、それぞれのvectors
を異なるサイズに割り当てることができます。例えば:
type(ragged_array) :: ragarr
...
allocate(ragarr%vectors(5))
...
allocate(ragarr%vectors(1)%elements(3))
allocate(ragarr%vectors(2)%elements(4))
allocate(ragarr%vectors(3)%elements(6))