Fortran Coder

查看: 8978|回复: 3
打印 上一主题 下一主题

[数值问题] 可变数组的问题

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
10 元
贡献
4 点
跳转到指定楼层
楼主
发表于 2016-4-26 16:52:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现在定义一个二维可变数组保存数据,但是两个的维度并不知道,在程序运行的过程中会不断的增加维度,这种情况,有什么好的思路解决吗?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

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

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2016-4-26 19:04:20 | 只看该作者
二维数组的维度是2,不能再增加了。不然就是三维数组了。
你想增加的应该是每个维度的大小

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

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2016-4-26 17:41:12 | 只看该作者
本帖最后由 li913 于 2016-4-26 17:42 编辑

既然是二维数组,维度当然是2. 可变的只能是每一维的长度。定义两个数组A,B1、A、B分配内存
2、赋值A
3、b = a
4、重新分配a,即扩展a
5、 b赋值给a
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 15:47

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表