0
我正在使用一個模板類,我希望包含大小取決於模板參數的固定大小的數據數組。一個簡單的例子是具有模板參數相關大小的固定大小C數組
template<int D>
class Foo
{
private:
int m_array[D*(D+1)];
};
雖然可變大小的C數組在一般理解的皺起了眉頭,在這裏,他們可能是合理的,因爲D
小,這是很好的和明確的m_array
多少價值持有(以及它不能改變尺寸)。我的問題是
- 這實際上是一個合理的使用變量大小的數組呢?
- 這是否總是不好的做法,因爲這些數組並未得到編譯器的普遍支持?
- 有沒有乾淨的選擇?人們可以使用
std::vector
並在構造函數中設置大小,我認爲這會使代碼變得不那麼清晰。是否最好使用C++ 11的std::array
,從而將上例中的相關行更改爲std::array<int,D*(D+1)> m_array;
?
1.'m_array'不是一個可變長度的數組。所以問題的其餘部分是沒有意義的。 – juanchopanza 2013-03-18 18:31:58
他不是在詢問一般的可變長度數組,而是模板參數相關的數組大小。 – 2013-03-18 18:33:41
@ user1654209 OP問題肯定是在詢問VLA,以及在這種情況下是否合理。 – juanchopanza 2013-03-18 18:35:28