今天做了一道题,要通过vector开辟一个二维数组,一开始我是这样写的。
vector<vector<int>> res;
res.reserve(n*n)
但是在对res[0][0]赋值的时候,出现了错误。于是我就改成了如下语句:
vector<vector<int>> res;
res.reserve(n)
for(int i=0; i<n; i++)
res[i].reserve(n)
结果还是不对,于是参考了cpp官网http://www.cplusplus.com/reference/vector/vector/reserve/。
发现reserve函数只是为vector分配一些存储空间而已,reserve并不能影响vector的大小,也不能改变vector中的元素。
利用vector开辟二维数组,正确的写法为
vector<vector<int>> res(n, vector<int>(n));