关于C++中stl中的vector二维动态数组问题

class Solution {
public:
    vector<vector<int>> vec;
    vector<vector<int>> levelOrder(TreeNode* root) {
        level_binary(root,0);
        return vec;
    }
    void level_binary(TreeNode * root,int level){
        if(root == NULL){  //递归终止条件
            return ;
        }
        if(vec.size() == level) vec.resize(level + 1);  //为什么要用resize
        vec[level].push_back(root->val);      
        level_binary(root->left,level + 1);  
        level_binary(root->right,level + 1);
    }
};

问题:为什么vector的二维数组的第一维为什么要用resize

https://blog.csdn.net/ljf_study/article/details/66968197

因为不增加一行,下面的vec[level]就越界了

不将vector的大小扩充的话,下一行vec[level].push_back(root->val);中的vec[level]将会数组越界,因为此时vec此时的大小为level,最后一个下标为level- 1