1. 程式人生 > >c++中二維陣列與二維向量的長度

c++中二維陣列與二維向量的長度

對於一個二維陣列:

int mm[3][5] = { { 1,2,3,4,5 },{ 5,6,7,8,9 },{ 9,10,11,12,13 } };
int toatlnums = sizeof(mm) / sizeof(int);  //元素總個數
int cols = sizeof(mm[0]) / sizeof(int);  //行
int raws = totalnums / cols;  //列

對於一個二維向量:

vector<vector<int>> matrix = { {1,2,3,4,5},{5,6,7,8,9},{9,10,11,12,13} };
int raws = matrix.size(); //行
int cols = matrix[0].size(): //列
int totalnums = raws * cols; //元素總個數

而對於向量:

sizeof(matrix) ;
sizeof(matrix[0]);
sizeof(vector<vector<int>>);
sizeof(vector<int>);
sizeof(vector<double>);

以上sizeof的結果都是16!

所以sizeof(vector<type>)的大小,跟容器裡面存放多少資料無關,也與存放的資料型別無關,它是在編譯期確定的一個值,僅跟具體的編譯器有關。