6

重複の可能性:
C++ でコンパイル時に静的配列をプログラムで作成する

コンパイル時に次の配列を初期化することは可能ですか?

template<int n> void
foo()
{
    static int pairs[2*n]; // = {0,0, 1,1, ..., n-1,n-1}
    for (int i = 0; i < n; i++)
    {
         pairs[2*i] = pairs[2*i+1] = i;
    }

    do_something_with_pairs(pairs);
}

(私は Xcode 4.5 で Clang を使用しているので、C++11 は問題ありません)

4

1 に答える 1

0

私の知る限り、配列イニシャライザを拡張することは不可能であり、静的な初期化データを生成する手段として再帰的なテンプレート ベースのソリューションを除外しています。

ただし、使用するデータ ポイントの数だけ静的配列を作成するという簡単なことはできます。これは簡単なスクリプトで生成できます。または、Boost プリプロセッサ ライブラリなどによって。

次に、その配列へのポインターを使用できます。

于 2012-11-29T11:49:25.320 に答える