麻烦高手帮小弟我将fortran转成C++ 或者帮小弟我写个注释

麻烦高手帮我将fortran转成C++ 或者帮我写个注释
我自己尝试着写了一下,希望各位帮我指正一下,多谢!!
!      program mian
!       integer deltat,ifh0,nx,ny,nz,nt,idx_map,nvar
!       real dx,dy   
!       integer idx_vars(nvar)
!       real var(nx,ny,nz,nt,nvar),xlon(nx,ny),xlat(nx,ny)
   
 !---------------------------
 !    调用前需要对()中的变量赋值。
                   .....
 !--------------------------       
! call putout1h(filename,deltat,ifh0,nx,ny,nz,nt,nvar,
!     + dx,dy,idx_map,xlon,xlat,idx_vars,var)

! end
subroutine putout1h(filename,deltat,ifh0,nx,ny,nz,nt,nvar,
     + dx,dy,idx_map,xlon,xlat,idx_vars,var)         //声明函数putout1h
       integer deltat,ifh0,nx,ny,nz,nt,idx_map,nvar  //声明整形
       real dx,dy                               //浮点型声明
       integer idx_vars(nvar)                        //声明整形数组
       real var(nx,ny,nz,nt,nvar),xlon(nx,ny),xlat(nx,ny) //声明三个浮点型数组第一个五维数组
!input
  character filename*200                       //字符串
        
!temp
    real,allocatable::u1h(:,:,:,:)               //应该类似开辟一个内存块吧?这里不清楚了
  integer idx_vars0(nvar+2)                    //声明一个整形数组?

!---------------------------------------------
        idx_vars0(1)=1                                //类似 int idx_vars0[1] = 1
        idx_vars0(2)=2                                //类似 int idx_vars0[2] = 2
        do iv=1,nvar-2                                //类似 for(int iv = 1;iv <nvar-2; i++)
   idx_vars0(iv+2)=idx_vars(iv)               //类似idx_vars0[iv+2]=idx_vars[iv]  
  enddo

        allocate(u1h(nx,ny,nz,nt))                    //这里好像是真的分配内存块吧,搞不灵清了
!-------------------------------------------------
! read head
        open(1,file=trim(filename),form='binary')      //打开文件