24小时热门版块排行榜    

查看: 343  |  回复: 2

浔荆

木虫 (正式写手)

[求助] 如何解决程序中所需数组大小变动的问题? 已有1人参与

最近的编程中,经常要向模型中动态的加入新的对象。例如一开始数组记录100个原子的坐标,随着时间增长,原子数越来越多,所需的数组大小也越来越大。
若是用allocatable数组的话,需要频繁的deallocate,对此我只能预估一个可能需要的最大对象数,建立一个比此稍大的数组。但十分的不方便,也还存在数组溢出的可能。
若是用类似链表的串行数据的话,倒是解决了数组上限的问题,不过串行数据读取十分麻烦,效率没有数组高,可行性也不大。
在此请教各位大师,有没有办法既可以拥有串行数据随意增减的功能,又拥有数组读取方便的功能呢?
请各位大师指教。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

安靖

银虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
浔荆: 金币+20, ★★★★★最佳答案 2014-09-16 10:22:22
推荐还是用allocatable数组比较好。可以这么做
一般来说,你可以根据自己分析问题的规模先设定一个数组大小,比如N,然后分配数组空间。
当空间不够时,重新分配空间,但是你可以在原有空间大小上乘以一个系数,例如0.1。
这样每次分配空间,数组是以等比数列增长,既保证了数组空间,又不会太过频繁的申请空间。
2楼2014-09-15 16:00:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

浔荆

木虫 (正式写手)

引用回帖:
2楼: Originally posted by 安靖 at 2014-09-15 16:00:49
推荐还是用allocatable数组比较好。可以这么做
一般来说,你可以根据自己分析问题的规模先设定一个数组大小,比如N,然后分配数组空间。
当空间不够时,重新分配空间,但是你可以在原有空间大小上乘以一个系数,例 ...

这倒是一个好思路,谢谢你的回复,让我受益匪浅
3楼2014-09-16 10:22:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 浔荆 的主题更新
信息提示
请填处理意见