- ベストアンサー
※ 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>などの機能を利用した実装方法を教えてほしいとしている。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
allocatable 属性を付ける. いずれにしても (C++ と同じく) 言語として「要素を保存したまま reallocate」という機能は持っていないので「新しく allocate → コピー → deallocate」という手順になると思うけど.