Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中返回2d向量时出现分段错误+; 向量解决方案::预打印(int A) { 向量(2*A-1,std::vector(2*A-1)); int flag=A; int i,k=0,l=0; int m=2*A-1,n=2*A-1; 而(k_C++_Vector_Segmentation Fault_Spiral_2d Vector - Fatal编程技术网

C++ 在C+中返回2d向量时出现分段错误+; 向量解决方案::预打印(int A) { 向量(2*A-1,std::vector(2*A-1)); int flag=A; int i,k=0,l=0; int m=2*A-1,n=2*A-1; 而(k

C++ 在C+中返回2d向量时出现分段错误+; 向量解决方案::预打印(int A) { 向量(2*A-1,std::vector(2*A-1)); int flag=A; int i,k=0,l=0; int m=2*A-1,n=2*A-1; 而(k,c++,vector,segmentation-fault,spiral,2d-vector,C++,Vector,Segmentation Fault,Spiral,2d Vector,以下是您的错误: 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

以下是您的错误:

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;
        }

while(k你越界了,因为索引从0开始到
2*A-1
。因为
int m=2*A-1,n=2*A-1;
你需要改变这个:

while(k<m && l<n)

while(kValid索引从0变为
(2*A-1)-1
。因此,当您访问n-实际答案已发布时,这是越界访问。今后,请确保您学习一些调试技术。例如使用调试器。以及注释内容。这里,我们有四个for循环,并怀疑其中一个循环中存在错误。您的工作是找出它是哪一个.
while(k<m && l<n)
while(k<=m && l<=n)
while(k < m && l < n)