Fortran increase dynamic array size in function

前端 未结 3 1069
滥情空心
滥情空心 2020-12-30 13:28

I need a variable size array in Fortran. In C++ I would use vector. So I have a function like

integer function append(n, array, value)
  integer, pointer, d         


        
3条回答
  •  一个人的身影
    2020-12-30 13:59

    Thank you a lot janneb.It was very helpful your comment.

    Only a few change I have made was to omit the deallocate(array) . There was'nt any erro omitting this line in my code. This change is specially helpful if you need to put it into a loop and you don't allocated array before the loop. My specific case follows below (look that I don't allocate x_all before or into the loop):

    begin program test 
      integer,allocatable::x_all(:),tmp_arr(:)
      integer,allocatable::x_tmp(:)
      integer::N
      allocate(x_tmp(2*N))
      (...)
    
      i=1
      do while(logical test)
        ...
        x_tmp(i)=some calculus
        i=i+1
        ...
      end do
      i=i-1
      allocate( tmp_arr( 1:(i+size(x_all) ) ) )
      tmp_arr(1:size(x_all))=x_all
      tmp_arr(size(x_all)+1:)=xtemp
      call MOVE_ALLOC(tmp_arr,x_all)  
      ...
    end program
    

提交回复
热议问题