サイズがテンプレート パラメーターに依存する固定サイズのデータ配列を含めたいテンプレート クラスを使用しています。簡単な例は
template<int D>
class Foo
{
private:
int m_array[D*(D+1)];
};
可変サイズの C 配列は、一般的には当然のことながら眉をひそめられますが、ここでは正当化できる可能性があります。なぜなら、D
は小さく、いくつの値m_array
を保持できるか (そしてサイズを変更できないこと) が明確であるからです。私の質問は
- そもそも、これは実際に可変サイズの配列の正当な使用法ですか?
- これらの配列はコンパイラによって広くサポートされていないため、これは常に悪い習慣ですか?
- クリーンな代替手段はありますか?a を使用して
std::vector
、コンストラクターでサイズを設定することもできますが、これはコードがわかりにくくなると私は主張します。std::array
C++11 の を使用して、上記の例の関連する行を に変更する方が望ましいでしょうstd::array<int,D*(D+1)> m_array;
か?