• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[Fortran]VBでいうRedim Preserve)

[Fortran]VBでいうRedim Preserve

このQ&Aのポイント
  • [Fortran]VBでいうRedim Preserveに相当するものをやろうとしてループ回数に応じて配列を広げるためにallocateした配列をもう一度allocateしなおそうとするとエラーが出る。無理やり要素数100000と固定した整数配列と,現在格納されている個数を持ち、使いまわすことで実装している。ReDim Preserve相当句、std::vector<T>同等機能、変数のスコープをもっと狭くもてる実装方法を教えてほしい。
  • 元ネタはVBのRedim Preserveに相当するFortranの実装を探していた質問。VBではループ回数に応じて配列を広げる際にはRedim Preserveを使用するが、Fortranでは同様の機能がなく、別の方法で実装する必要がある。質問者は要素数100000と固定した整数配列と、現在格納されている個数を持ち、使いまわす方法で実装しているが、効率が悪いと認識している。新たな実装方法を教えてほしいとしている。
  • VBのRedim Preserveに相当するFortranの実装方法を質問している。現在は要素数100000と固定した整数配列と、現在格納されている個数を持ち、使いまわす方法で実装しているが、これが効率的ではないと感じている。他の実装方法、例えばReDim Preserve相当句やstd::vector<T>などの機能を利用した実装方法を教えてほしいとしている。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

allocatable 属性を付ける. いずれにしても (C++ と同じく) 言語として「要素を保存したまま reallocate」という機能は持っていないので「新しく allocate → コピー → deallocate」という手順になると思うけど.

関連するQ&A