二维vector,clear()操作请慎重,当心遇到vector subscript out of range问题

今天想要用vector实现二维数组的功能,尝试了把二维vector.谁知道刚上手就遇到了雷.

代码的形式大致如下:


vector<vector<int>>vv(3);
vv.clear();
for (int i = 0; i < 3; i++)
	vv[i].push_back(0);

因为要重复使用该二维vector,所以进行了清空操作.然而却遇到了问题:vector subscript out of range



后来在单步调试时发现了,clear()会让二维数组的size变成0,之前声明的3个一维数组的结构遭到破坏.

执行到for的头部时,自动窗口如下:


对上述代码做下改变:


vector<vector<int>>vv(3);
vv.clear();
vv.resize(3);
for (int i = 0; i < 3; i++)
	vv[i].push_back(0);

同样是执行到for的头部时,自动窗口如下:




猜你喜欢

转载自blog.csdn.net/Stephen___Qin/article/details/71024160