问题描述
我试图定义一个数组数组。
我已经定义:
最简单的方法可能是将 s 3数组,也许
整型,维(3,2,2):: s
,然后您可以编写语句,如
s(1,:,:) = x
s(2,:,:) = y
...
这是在Fortran中实现一组数组的自然方法。另一种可能更吸引你的选择是:
type :: twodarray
integer,dimension( 2,2):: elements
end type twodarray
type(twodarray),dimension(3):: s
s(1)%elements = x
如果您不喜欢 s(1)%元素= x 你可以为你的类型 twodarray 重新定义操作 = ,我没有现在可以为您编写代码。
I am trying to define a array of arrays.I have defined:
integer,dimension(2,2):: & x=reshape(source= (/0,1,1,0/), shape=(/2,2/)), & y=reshape(source= (/1,0,0,1/), shape=(/2,2/)), & z=reshape(source= (/1,1,1,1/), shape=(/2,2/))I want to define an array, say, s(3), of which, (x/y/z) are components, i.e.
s(1)=x s(2)=y and s(3)=zhow can I achieve that?
解决方案The simplest approach might be to define s as a rank-3 array, perhaps
integer, dimension(3,2,2) :: sand then you can write statements such as
s(1,:,:) = x s(2,:,:) = y ...This is the 'natural' way to implement an array of arrays in Fortran. An alternative, which might appeal to you more would be something like:
type :: twodarray integer, dimension(2,2) :: elements end type twodarray type(twodarray), dimension(3) :: s s(1)%elements = xIf you don't like the wordiness of s(1)%elements = x you could redefine the operation = for your type twodarray, I don't have time right now to write that code for you.
这篇关于Fortran中的阵列数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!