我正在實現一個3維數組。很像Excel文檔的單元格和表單。 x和y是頁面大小,z是頁數。現在,每個頁面的x和y索引可以相同。C++中的3維數組
我想用向量(讓我們現在只是說只有字符串),以接近這一點,但它聲明如下:
std::vector<std::string> sheets;
//x and y being the x-y coordinates and z being the number of pages.
int size = x*y*z;
sheets.reserve(size);
因此給了我一個很好的一段連續的內存(如的定義std :: vector),這是快速和高效的。
我的問題是:是否有這樣做與std ::數組的方式? 有沒有一種方法可以在創建對象時創建數組大小,還是必須在編譯時知道這一點?
class sheetsObj
{
int x, y, z;
int size;
//Where size is x * y * z.
std::array<std::string, size> sheets;
public:
sheetsObj(int xInd, int yInd, int zInd) : x{ xInd }, y{ yInd }, z{ zInd } {};
....
}
在此先感謝。
對於'std :: array',編譯時必須知道大小。爲什麼你要使用'std :: array'呢?我懷疑'x * y * z'可能會對堆棧有點大。 – BoBTFish 2014-09-12 15:23:14
'std :: array'需要在編譯時知道大小。如果您願意,您可以使用「模板」來指定大小。 – 2014-09-12 15:24:14