2
與Create an array with elements of different types的問題完全相同,但在Fortran中如何做到這一點?在Fortran中使用不同類型的元素創建數組
說我想要一個數組,第一維integer
類型,第二個real
和第三個character
(字符串)類型。是否可以在Fortran中創建「struct
」?
謝謝。
與Create an array with elements of different types的問題完全相同,但在Fortran中如何做到這一點?在Fortran中使用不同類型的元素創建數組
說我想要一個數組,第一維integer
類型,第二個real
和第三個character
(字符串)類型。是否可以在Fortran中創建「struct
」?
謝謝。
這裏是一個派生類型使用的一個例子的程序:
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
編輯:由於每建議通過喬納森·德西:
爲了有一個數組,其中每個元素都有一個int,float和char元素,你可以這樣做:
TYPE mytype
INTEGER :: ints
REAL :: floats
CHARACTER :: chars
ENDTYPE mytype
TYPE(mytype),DIMENSION(:),ALLOCATABLE :: a
ALLOCATE(a(10))
然後,您會引用您的元素,例如a(i)%ints
,a(i)%floats
,a(i)%chars
。 相關的答案見Allocate dynamic array with interdependent dimensions。
只需添加; IRO-bot的答案正確地爲您提供了一個派生類型,其中包含整數,浮點數和字符數組。如果你想要一個包含int + float + char的類型的數組,你可以像上面那樣定義你的類型,但是在類型上沒有DIMENSIONS - 例如,一個int,float和char - 然後定義例如。 TYPE(mytype),DIMENSION(10):: a'或'TYPE(mytype),ALLOCATABLE,DIMENSION(:),:: a'和後面的'allocate(a(10))'。 – 2011-12-19 13:51:40
@JonathanDursi感謝您的建議 - 我將其添加到答案。 – milancurcic 2011-12-19 16:48:35
非常感謝,夥計們。這非常有幫助。因此,使用派生類型我可以從主流/默認類型構建我自己的類型,我可以在定義中聲明的形式/維度,或者更好的是,根據程序的運行方式稍後分配它。甜。 – 2011-12-20 00:14:47