Fortran Coder

标题: 可变数组的问题 [打印本页]

作者: liyy1234    时间: 2016-4-26 16:52
标题: 可变数组的问题
现在定义一个二维可变数组保存数据,但是两个的维度并不知道,在程序运行的过程中会不断的增加维度,这种情况,有什么好的思路解决吗?

作者: li913    时间: 2016-4-26 17:41
本帖最后由 li913 于 2016-4-26 17:42 编辑

既然是二维数组,维度当然是2. 可变的只能是每一维的长度。定义两个数组A,B1、A、B分配内存
2、赋值A
3、b = a
4、重新分配a,即扩展a
5、 b赋值给a

作者: fcode    时间: 2016-4-26 19:04
二维数组的维度是2,不能再增加了。不然就是三维数组了。
你想增加的应该是每个维度的大小

方法一:
像楼上这样,重新分配
方法二:
用指针链表
方法三:
用递延长度可分配数组(部分编译器支持,例如 NAG)
如:
[Fortran] 纯文本查看 复制代码
real , allocatable :: a(:)
allocate(a(3))
a = [1,2,3] !//长度为3
a = [ a , 4 , 5 ]  !//长度增加为5

作者: pasuka    时间: 2016-4-27 08:23
问题在于二维数组是否需要查询、插入、删除功能
统统不需要的话,单向链表就行,否则请上C++的vector等等容器




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2