「Dynamic Arrays in C」の編集履歴(バックアップ)一覧はこちら

Dynamic Arrays in C」(2008/10/20 (月) 14:18:06) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

[[FFTWマニュアル]] - [[その他重要なこと>Other Important Topics]] - [[多次元配列のフォーマット>Multi-dimensional Array Format]] - [[C言語における動的配列>Dynamic Arrays in C]] * C言語における動的配列 Dynamic Arrays in C  ほとんどの場合に、動的にfftw_mallocを使って、配列を確保することを推奨します。1次元の場合よりも、多次元の方が複雑ではありますが、これは難しいことではありません。  配列の生成は簡単です。&bold(){fftw_malloc}のような動的メモリ確保ルーチンを使って、N個のfftw_complex値(複素数DFTに関しては)の大きさの配列を確保します。ここで、Nは配列の次元の積(すなわち、配列の複素数知の総数)です。以下に、ランク3の5x12x27の配列を確保するコード例を示します。 fftw_complex *an_array; an_array = (fftw_complex*)fftw_malloc( 5*12*27 * sizeof(fftw_complex) );  配列の要素にアクセスするには、少しテクニックがいります。つまり、固定サイズの配列と同じように"[]"を複数回使えばよいといものではありません。代わりに、明示的に列メジャー配列へ変換するための公式をつかって、オフセットを計算する必要があります。たとえば、上記の方法で確保された、(i,j,k)番目の要素を参照するためには、 an_array[k + 27 * (j + 12*i)] という表現を使えばよいでしょう。
[[FFTWマニュアル]] - [[その他重要なこと>Other Important Topics]] - [[多次元配列のフォーマット>Multi-dimensional Array Format]] - [[C言語における動的配列>Dynamic Arrays in C]] * C言語における動的配列 Dynamic Arrays in C  ほとんどの場合に、動的にfftw_mallocを使って、配列を確保することを推奨します。1次元の場合よりも、多次元の方が複雑ではありますが、これは難しいことではありません。  配列の生成は簡単です。&bold(){fftw_malloc}のような動的メモリ確保ルーチンを使って、N個のfftw_complex値(複素数DFTに関しては)の大きさの配列を確保します。ここで、Nは配列の次元の積(すなわち、配列の複素数知の総数)です。以下に、ランク3の5x12x27の配列を確保するコード例を示します。 fftw_complex *an_array; an_array = (fftw_complex*)fftw_malloc( 5*12*27 * sizeof(fftw_complex) );  配列の要素にアクセスするには、少しテクニックがいります。つまり、固定サイズの配列と同じように"[]"を複数回使えばよいといものではありません。代わりに、明示的に列メジャー配列へ変換するための公式をつかって、オフセットを計算する必要があります。たとえば、上記の方法で確保された、(i,j,k)番目の要素を参照するためには、 an_array[k + 27 * (j + 12*i)] という表現を使えばよいでしょう。  この手間は、適切なマクロを定義するか、もしくはC++言語では、"()"演算子をオーバーロードするクラスを作れば、軽減できます。最近のC99標準は、動的配列を、[]表現が使える”可変長”多次元配列として、解釈する機能がありますが、これはまだコンパイラで広くサポートされるものではありません。

表示オプション

横に並べて表示:
変化行の前後のみ表示: