我正在使用一个模板类,我想包含固定大小的数据数组,其大小取决于模板参数。一个简化的例子是
template<int D>
class Foo
{
private:
int m_array[D*(D+1)];
};
虽然通常不赞成可变大小的 C 数组是可以理解的,但在这里它们可能是合理的,因为D
它很小,而且很清楚有多少值m_array
(并且它不能改变大小)。我的问题是
- 首先,这实际上是对可变大小数组的合理使用吗?
- 这是否总是不好的做法,因为编译器并不普遍支持这些数组?
- 有干净的替代品吗?可以使用 a
std::vector
并在构造函数中设置大小,我认为这会使代码不那么清晰。是否最好使用 C++11std::array
,从而将上面示例中的相关行更改为std::array<int,D*(D+1)> m_array;
?