分割故障在C 中返回2D矢量时
Segmentation fault while returning a 2d vector in C++
vector<vector<int> > Solution::prettyPrint(int A)
{
vector<vector<int>>res(2*A-1, std::vector<int>(2*A-1));
int flag=A;
int i, k=0,l=0;
int m=2*A-1, n=2*A-1;
while(k<=m && l<=n)
{
for(i=l; i<2*A-1; i++)
res[k][i]=flag;//1st row
k++;
for(i=k; i<2*A-1; i++)
res[i][n]=flag;//last column
n--;
for(i=n; i>l; i--)
res[m][i]=flag;//last row
m--;
for(i=m; i>k; i--)
res[i][l]=flag;//1st column
l++;
flag--;
}
return res;
}
当我为完整的2D矩阵分配内存时,它为什么会产生分割故障错误,该内存将是[2a-1] [2a-1]。
如果a = 3输出必须像3 3 3 3 3 n3 2 2 2 2 3 n3 2 1 2 3 n3 2 2 2 2 3 n3 3 3 3 3 n
您超出了界限,因为索引从0到2*A-1
。由于int m=2*A-1, n=2*A-1;
您需要更改此信息:
while(k<=m && l<=n)
:
while(k < m && l < n)
这是您的错误:
while(k<=m && l<=n)
您应该使用:
while(k<m && l<n)
因为向量索引从0开始,而不是从1开始。
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- C++ & Python:传递并返回从 python 到 c++ 的 2D 双指针数组
- 返回 2D 数组(在 C# 和 C++ 中)
- 将 2D 数组作为函数参数,并返回 2D 数组作为函数的返回类型
- 返回C 中2D阵列的对角线元素总和
- 函数可以返回 2D 数组吗?
- 在 C++ 中返回 2D arrray
- 如何将数组 2d 作为参数从函数传递并返回数组 2d 此函数
- qt如何连接QPushButton的2D数组并返回位置
- 从类返回 2D 数组指针
- 如何将 2D 数组传递和返回给函数
- 在 c++ 中返回指针的 2d 数组
- 如何使用JNI返回C char 2D数组
- 2D 数组内存分配 (malloc) 返回 NULL
- C++从函数返回的 2D 数组,错误:以非零状态退出
- 如何使用函数参数中的int指针来获取2d数组中最大值的索引并返回指针
- 分割故障在C 中返回2D矢量时
- 使用类型转换在 C++ 中返回 2D 数组
- C++ - 通过函数返回 2D 数组