int a[][5] = {{1},{1,2}};
什麼是「該」其第二維的尺寸,並且將
a[0][1]
有什麼價值?
談論大小還是有意義的,還是它不同於「行」到「行」?
這被認爲是不好的做法?
int a[][5] = {{1},{1,2}};
什麼是「該」其第二維的尺寸,並且將
a[0][1]
有什麼價值?
談論大小還是有意義的,還是它不同於「行」到「行」?
這被認爲是不好的做法?
在代碼
int a[][5] = {{1},{1,2}};
第一尺寸的大小是2(因爲有外{}
內的兩個元素),和第二維的尺寸爲5的初始化劑未盡元件是初始化爲零。因此,您的代碼相當於:
int a[][5] = {{1,0,0,0,0},{1,2,0,0,0}};
這是無效的。它甚至不會編譯:
test.cc:1:9: error: declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first
當您使用與陣列的花括號初始化記號,必須指定所有尺寸的陣列是要去所有部件,所以這段代碼只給你一個編譯時錯誤。
如果你想擁有一個大小不同的容器數組,可以考慮使用一組向量,或者甚至是一個向量向量。要使用它們,只需執行#include <vector>
即可完成。
這不是有效的C++。除了最慢的尺寸之外,所有尺寸都必須明確指定。 – 2012-02-28 20:21:19
@ Kerrek SB感謝您的指針 – user695652 2012-02-28 20:26:50
如果您修復* all *範圍,則允許您將初始化程序作爲平面列表編寫。但我認爲如果將內部維度留爲空白,您無法做到這一點。 – 2012-02-28 20:33:43