13

2 番目の次元で長さが異なる配列を作成しようとしています。

  A = 1 3 5 6 9
      2 3 2
      2 5 8 9

これは可能ですか?私はかなりの時間を費やしましたが、どちらの方法でも見つけることができません。

4

2 に答える 2

19

はいといいえ。まずいいえ:

次のように宣言されたものなど、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))
于 2013-08-19T14:47:39.757 に答える