在LeetCode刷算法的时候发现,使用vector<vector<int>>
时如果声明时不初始化,会报空指针引用错误:reference binding to null pointer of type 'value_type'
。
根据《C++ primer第五版》P40:
默认初始化:
如果是内置类型的变量未被显示初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。一种例外情况是,定义在函数体内部的内置类型变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或者其他形式访问此类型将引发错误。
初始化方法:
int numRows=10,zone=5;//层数,每层需要的空间
vector<vector<int>> vec(numRows, vector<int>());//初始层数,赋值
for (int i = 0; i < numRows; i++) {
vec[i].resize(zone);
}