【发布时间】:2012-01-27 08:56:37
【问题描述】:
我想分配一个数组B,使其具有相同的形状并且与另一个数组A 具有相同的下限和上限。例如,我可以使用
allocate(B(lbound(A,1):ubound(A,1), lbound(A,2):ubound(A,2), lbound(A,3):ubound(A,3)))
但这不仅不优雅,而且对于(甚至)更高维度的数组来说也很烦人。
我希望有更多类似的东西
allocate(B(shape(A)))
这行不通,即使这行得通,每个维度都会从 1 开始,这不是我想要的。
有谁知道我可以如何轻松地为任意数组维度分配一个数组,使其具有与另一个数组相同的大小和边界?
【问题讨论】:
-
请问您为什么需要这样做。你能不能在分配
B和A的同时分配B(或者至少在相同的范围内,当你可以访问用于分配A的数组边界/形状参数时)。或者,如果您将A传递到函数或子例程中,您可以不只是有一个假定大小的数组B位于该例程的本地,它假定A的形状? -
好吧,我想我不需要这个,它真的很不雅。数组
A分配在不同的.f 文件中,边界为A(nlmx-a_offset:nlpx+b_offset, ...),你会注意到这比使用l/ubound 的字符多。 -
那么我认为 M.S.B. 的回答可能是做你想做的事情的最佳方式。
标签: arrays fortran allocation