簡體   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