是否可以使数组的维度可分配? (不只是尺寸的大小)
,即给予的东西:
REAL, DIMENSION(:,:,: ... n), ALLOCATABLE :: array
我的意思是在数组阵列感觉中,但我们可以保留Fortran的易于访问的数组结构吗?有this,但第一个答案不满足这种需要。第二个答案使用指针。那会有用吗?
答案 0 :(得分:2)
不,不可能有一个具有可变等级的数组。来自Fortran 2008 Standard,Cl。 2.4.6"数组":
1数组最多可包含十五个维度,任何维度都可以包含任何范围。数组的大小是总数 元素数量,等于范围的乘积。数组可以具有零大小。形状 数组由其在每个维度中的等级及其范围确定,并表示为排名第一的数组 元素是范围。 应声明所有命名数组,并在其中指定命名数组的等级 宣言。一旦声明,命名数组的等级是常量; 范围可以是常量或可以变化 执行期间。
[强调我的。]
但是,您可以使用范围为product(extent in each dimension)
的一维数组,并对元素进行适当索引。
你甚至可以拥有与这些1D阵列相关的多维指针。这将为您处理索引,但(如引文中所示),标准Fortran限制为15维。