use*_*042 12 arrays fortran multidimensional-array
我试图在第二维中制作具有不同长度的数组,例如:
A = 1 3 5 6 9
2 3 2
2 5 8 9
Run Code Online (Sandbox Code Playgroud)
这可能吗?我花了相当多的时间看,但无论如何都找不到.
Hig*_*ark 19
是的,不是.首先是否:
Fortran中的正确数组,例如声明为这样的数组:
integer, dimension(3,3,4) :: an_array
Run Code Online (Sandbox Code Playgroud)
或者像这样
integer, dimension(:,:,:,:), allocatable :: an_array
Run Code Online (Sandbox Code Playgroud)
是正规的; 对于每个维度,只有一个范围.
但是,如果你想为一个参差不齐的数组定义你自己的类型,那就相对容易了:
type :: vector
integer, dimension(:), allocatable :: elements
end type vector
type :: ragged_array
type(vector), dimension(:), allocatable :: vectors
end type ragged_array
Run Code Online (Sandbox Code Playgroud)
通过这种方法,您可以将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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |