我正在使用allocate(a(n,m))
在Fortran中分配一个(n×m)数组。然而,稍后,我需要它的转置,但不再是原始的,所以我做a = transpose(a)
。但是,这似乎没有改变shape(a)
,它仍然是(n×m)而不是(m×n)。有没有办法更新已分配数组的形状,还是我需要为另一个数组分配空间,将转置放在那里,然后解除分配原始数组?
答案 0 :(得分:4)
根据Fortran 2003标准,在分配给allocatble数组时,如果没有分配正确的形状,则应自动重新分配。如果您的编译器还没有支持,那么您必须在编写时手动执行此操作。对于英特尔Fortran,您必须明确启用此功能。