arrays - 不同长度的多维数组

标签 arrays multidimensional-array fortran

我正在尝试在第二维中创建一个具有不同长度的数组,例如:

  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

有规律;每个维度只有一个范围。

但是,如果您想为不规则数组定义自己的类型,则可以,而且相对容易:
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))

关于arrays - 不同长度的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316592/

相关文章:

c - 从存储在一维和二维数组中的文件中读取逗号分隔值

compiler-errors - 如何使 [REFERENCE] 的 Fortran 程序与 gfortran 兼容?

debugging - 连接调试器时不会出现的错误

java - 获取二维数组的边缘值,同时防止越界

java - 实例化数组但不断出现 IndexOutOfBounds 异常

php - 在一个循环中执行两条 PDO 语句

python - numpy如何将数组变为除最大值之外的零一

java - 再次重新执行for循环

performance - 测量每行花费的时间,fortran

java - 列表不会出现在我的应用程序中