在Fortran中创建包含不同类型元素的数组

时间:2011-12-19 04:53:54

标签: arrays struct fortran

Create an array with elements of different types完全相同的问题,除了如何在Fortran中执行此操作?

假设我想要一个第一维为integer类型,第二个real和第三个character(字符串)类型的数组。是否有可能在Fortran中创建“struct”?

感谢。

1 个答案:

答案 0 :(得分:7)

以下是派生类型使用的示例程序:

TYPE mytype
  INTEGER,DIMENSION(3)   :: ints
  REAL,DIMENSION(5)      :: floats
  CHARACTER,DIMENSION(3) :: chars
ENDTYPE mytype

TYPE(mytype) :: a

a%ints=[1,2,3]
a%floats=[1,2,3,4,5]
a%chars=['a','b','c']

WRITE(*,*)a

END

输出结果为:

        1            2            3    1.000000        2.000000     
3.000000        4.000000        5.000000     abc

编辑:根据Jonathan Dursi的建议:

为了得到一个数组,其中每个元素都有一个int,float和char元素,你可以这样做:

TYPE mytype
  INTEGER   :: ints
  REAL      :: floats
  CHARACTER :: chars
ENDTYPE mytype

TYPE(mytype),DIMENSION(:),ALLOCATABLE :: a

ALLOCATE(a(10))

然后,您可以引用您的元素,例如a(i)%intsa(i)%floatsa(i)%chars。 相关答案在Allocate dynamic array with interdependent dimensions中给出。