| 查看: 2560 | 回复: 12 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
fortran动态数组大小分配问题(allocatable)?已有2人参与
|
|||
各位大神,我定义了一个动态数组type(sta_information),allocatable::sta_info( ,在给sta_info分配大小的时候遇到了问题,我有一个循环,想让这个数组的大小随着循环变化可以吗?还是必须要开始时就指定一个较大的能放下所有数据/字符串的数组?因为我把所有数据放进去之后要进行从A到Z的排序,如果数组太大有空的会不会影响排序?就是第一个循环大小分配55,到第二个循环的时候让他大小变成100,第三个循环的时候大小变成200(也就是分别产生55,45,100个数据),因为不知道数据总量,不想刚开始就把大小设置的比较大,比如allocate(sta_info(1000))等,请问这个可以如何处理,谢谢~~~ |
» 猜你喜欢
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有7人回复
申请2026年博士
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有5人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有6人回复
2025冷门绝学什么时候出结果
已经有7人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
菜鸟求助关于fortran if循环的问题,经验丰富的前辈肯定一眼能看出问题出在哪
已经有3人回复
fortran 如何在子程序中实现动态数组的定义和声明?
已经有15人回复
菜鸟求助fortran数组声明及子程序的一些问题啊
已经有4人回复
Fortran输出二进制数据,用matlab读出,结果出错,求助问题何在?
已经有4人回复
fortran,gfortran,code block
已经有10人回复
fortran中的数组越界问题,
已经有3人回复
关于应用fortran编写高斯消去法程序来求解方程组的问题
已经有5人回复
fortran 程序有write和没有write两种情况计算的结果为什么会不一样?
已经有14人回复
求助:intel visual fortran的格式问题
已经有14人回复
请教 fortran 运行错误的原因
已经有13人回复
FORTRAN新手 求助主程序循环问题
已经有10人回复
Fortran如何读取数据避开空行?
已经有7人回复
请教一个fortran小程序编译出错的问题,谢谢
已经有9人回复
Fortran中关于数组的变化
已经有5人回复
【求助】Fortran语言赋值问题?
已经有3人回复
Fortran的格式化输入输出问题
已经有14人回复
【求助】FORTRAN写文件时每行开头都多了一个空格?
已经有6人回复
【求助】求指点,在Fortran里面,怎样实现“数组维度可调”的数组?
已经有5人回复
9楼2015-05-28 11:45:15
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
我也常遇到这样的问题,一般我是通过以下方案解决的。 定义一个很大的数组,如sta_info(0:1000)。 之所以定义成sta_info(0:1000)而非sta_info(1:1000),并不是因为我习惯了C语言里的数组默认下标从0开始。实际上,这里的sta_info(0)和其他元素不一样,它是用来记录整个数组的有效大小的。 例如,我们在第一个循环给元素0:55赋值,其他的元素用不到,可以这么实现: allocate(sta_info(0:1000)) sta_info=-10000 !初始化为一个不常见的数,方便调试 sta_info(0)=55 !确定你需要的数组大小 do i=1,sta_info(0) sta_info(i)=..... enddo 简单来说,就是先分配足够的大小,但另外定义一个变量来描述它的实际大小。这样一来避免了数组大小变化的时候,需要频繁的allocate和deallocate。另一方面又可以避免数组太大而带来的速率降低。(排序这样的数组操作,只需要对1:sta_info(0)这些元素进行即可) |
2楼2015-05-27 08:19:38
pippi6
铁杆木虫 (著名写手)
工程和科学数值计算咨询
- 应助: 413 (硕士)
- 贵宾: 0.002
- 金币: 7116.5
- 散金: 15
- 红花: 63
- 帖子: 1639
- 在线: 798.9小时
- 虫号: 2469437
- 注册: 2013-05-14
- 专业: 计算数学与科学工程计算
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
subroutine DynamicArray implicit none real*8, allocatable, dimension( :: sta_infointeger :: i,n=20,j do i=1,n allocate(sta_info(i)) do j=1,i sta_info(j)=j end do print*,' i=',i,' sizeof(sta_info)=',sizeof(sta_info) deallocate(sta_info) end do end subroutine DynamicArray |
3楼2015-05-27 13:14:14
4楼2015-05-27 19:23:58













,在给sta_info分配大小的时候遇到了问题,我有一个循环,想让这个数组的大小随着循环变化可以吗?还是必须要开始时就指定一个较大的能放下所有数据/字符串的数组?因为我把所有数据放进去之后要进行从A到Z的排序,如果数组太大有空的会不会影响排序?
回复此楼