我正在尝试打印2D矩阵中的同心矩形图案。
然而,它向我展示了一个分段错误。我试着把所有的代码都写成注释。
我认为声明本身是有缺陷的。这是什么?
int l = 2*A - 1;
vector<vector<int> > ar(l);
for(int i = 0; i<(2*A - 1); i++)
{
for (int j = 0; j<(2*A - 1); j++)
{
int h= max(abs(A - i + 1),abs(A - j + 1));
ar[i][j] = h+1;
}
}
return ar;
发布于 2018-06-02 21:47:43
问题是,虽然您创建了一个包含2*A - 1
元素的向量,但这些元素中的每个元素都是一个空向量。因此,当您尝试访问元素的元素(两个下标)时,您访问的是不存在的内容。
一种解决方案是将这些空向量更改为具有假定元素数量的向量。在开始内循环之前,添加:
ar[i].resize(2*A - 1);
(如果A
是固定的,您可能会发现std::array
比向量更方便。)
https://stackoverflow.com/questions/50657421
复制相似问题