2012-02-28 202 views
-1

在陣列2dim陣列具有不同尺寸的第二尺寸

int a[][5] = {{1},{1,2}}; 

什麼是「該」其第二維的尺寸,並且將

a[0][1] 

有什麼價值?

談論大小還是有意義的,還是它不同於「行」到「行」?

這被認爲是不好的做法?

+1

這不是有效的C++。除了最慢的尺寸之外,所有尺寸都必須明確指定。 – 2012-02-28 20:21:19

+0

@ Kerrek SB感謝您的指針 – user695652 2012-02-28 20:26:50

+1

如果您修復* all *範圍,則允許您將初始化程序作爲平面列表編寫。但我認爲如果將內部維度留爲空白,您無法做到這一點。 – 2012-02-28 20:33:43

回答

1

在代碼

int a[][5] = {{1},{1,2}}; 

第一尺寸的大小是2(因爲有外{}內的兩個元素),和第二維的尺寸爲5的初始化劑未盡元件是初始化爲零。因此,您的代碼相當於:

int a[][5] = {{1,0,0,0,0},{1,2,0,0,0}}; 
1

這是無效的。它甚至不會編譯:

test.cc:1:9: error: declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first 
0

當您使用與陣列的花括號初始化記號,必須指定所有尺寸的陣列是要去所有部件,所以這段代碼只給你一個編譯時錯誤。

如果你想擁有一個大小不同的容器數組,可以考慮使用一組向量,或者甚至是一個向量向量。要使用它們,只需執行#include <vector>即可完成。