我正在尝试使用向量创建一个二维数组。我编写了以下代码:
int main() {
vector< vector<int> > v;
int i, j;
for(i=0; i<11; i++)
for(j=0; j<11; j++)
v[i].push_back(j);
for(i=0; i<11; i++) {
for(j=0; j<11; j++)
cout<<v[i][j]<<" ";
cout<<endl;
}
return 0;
}
现在我期望它打印数字 0 到 10,十一次(每次换行)。但代码给出了运行时错误(分段错误)。有人可以告诉我哪里出错了吗?
Thanks.
当您声明任何内容的向量时,它还没有任何元素。
Thus:
v[i].push_back(j)
试图将 j 插入向量 v 中位置 i 处不存在的向量中。
在这种情况下,当您知道大小时,您应该使用构造函数中所需的元素数量来初始化向量:
vector<vector<int> > v(11);
这会初始化向量 v,其中包含 11 个空向量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)