私は、リスト変数を持っていて、変数のサイズはconst
です。これは、リストのサイズが実行ごとに異なりますが、個々の実行では変更できないという要件が強制されるため、私にとって役に立ちます。1つの要素で塗りつぶすことによってstd :: arrayを構築します
これらのリストのコレクションを作成したいと思います。コレクション内のリストの数はテンプレート変数ですので、std::array
を使用したいと思います。つまり、配列のサイズがテンプレートのパラメータであり、それぞれのサイズリストは
残念ながら、構築時に指定したconst
次のとおりです。
- constのサイズのリストがあるデフォルトコンストラクタません(そのサイズを指定する必要があります!)ので、私はの各要素に、コンストラクタの引数を指定する必要がありますリスト。私は、配列を作成し、要素を設定することはできません
- 私のリストのサイズは、テンプレート変数があるので、私は標準の初期化子リストを使用することはできません - 必要な数の要素が
を変える私がいることを認識あり選択肢は以下のとおりです。
- それが自然という条件を強制しないので、ベクトルの大きさは、私のテンプレートパラメータと同じであるが、これは洗練思えるまで、私は一つ
std::vector
だけpush_back
要素1を使用することができます結果のベクトルのサイズは、完全に取り込まれた後は変更しないでください。 - 私はインデックスの順序を反転し、
std::arrays
のconstサイズのリストを持つことができます。しかし、これは他のコードとうまく適合しません。配列から個々のconstサイズのリストをクライアントコードに渡すことができるようにしたい - constサイズのリストクラスのデフォルトコンストラクタを作成し、配列を作成してからnewを使用して配列要素を置き換えます一つずつ。それは(それが誤って別の場所に呼ばれていますどのような場合にはconstのサイズのリストのデフォルトコンストラクタが?何をするのでしょうか?私の後継者は、私が何をやったかは考えていないときに何が起こる?)
いくつかの悪い副作用を持つことができるようにこれは思えますこれらのどれもが完全に理想的ではないので、私がいたならば、それは素晴らしいことだろうと思っている配列コンストラクタの引数として取る(またはヘルパー機能)、:
- Tの配列の要素数
- 単一のTオブジェクト
...そしてstd::array<T>
を返します。それぞれT
は引数2からコピー構築されています。
このようなことはありますか?
"各リストのサイズは、構築時に指定されたconstです" - 私はあなたも*コンパイル時*を意味することを願っています。さもなければ、get-goから 'std :: array'を使う考えを投げることができます。 –
WhozCraig
リストのサイズはコンパイル時定数ではありません。 – user1476176