繁体   English   中英

具有模板参数相关大小的固定大小的C数组

[英]Fixed-sized C arrays with template parameter-dependent sizes

我正在使用模板化类,我想包括固定大小的数据数组,其大小取决于template参数。 一个简化的例子是

template<int D>
class Foo
{    
    private:
        int m_array[D*(D+1)];            
};

可以理解的是,一般来说,可变大小的C数组会被皱眉,但在这里它们可能是合理的,因为D很小,很不错,并且可以清楚地知道m_array拥有多少个值(并且它不能更改大小)。 我的问题是

  1. 实际上,这是否首先是合理使用可变大小数组的方法?
  2. 这总是不好的做法吗,因为编译器未普遍支持这些数组?
  3. 有没有干净的选择? 可以使用std::vector并在构造函数中设置大小,我认为这会使代码不太清晰。 最好使用C ++ 11的std::array ,从而将上面示例中的相关行更改为std::array<int,D*(D+1)> m_array;

您的示例不是可变长度数组 ,就像C99中存在的那样。 在那里,仅在运行时才知道数组的大小。

在这里,您可以使用编译时常量来设置数组的大小。 这样做没有问题。 出去享受吧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM