数组的动态维度

时间:2016-07-12 12:25:18

标签: arrays multidimensional-array fortran

是否可以使数组的维度可分配? (不只是尺寸的大小)

,即给予的东西:

REAL, DIMENSION(:,:,: ... n), ALLOCATABLE :: array

我的意思是在数组阵列感觉中,但我们可以保留Fortran的易于访问的数组结构吗?有this,但第一个答案不满足这种需要。第二个答案使用指针。那会有用吗?

1 个答案:

答案 0 :(得分:2)

不,不可能有一个具有可变等级的数组。来自Fortran 2008 Standard,Cl。 2.4.6"数组":

  

1数组最多可包含十五个维度,任何维度都可以包含任何范围。数组的大小是总数   元素数量,等于范围的乘积。数组可以具有零大小。形状   数组由其在每个维度中的等级及其范围确定,并表示为排名第一的数组   元素是范围。 应声明所有命名数组,并在其中指定命名数组的等级   宣言。一旦声明,命名数组的等级是常量; 范围可以是常量或可以变化   执行期间。

[强调我的。]

但是,您可以使用范围为product(extent in each dimension)的一维数组,并对元素进行适当索引。

你甚至可以拥有与这些1D阵列相关的多维指针。这将为您处理索引,但(如引文中所示),标准Fortran限制为15维。