为什么我会有分割错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (57)

我试图在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;
提问于
用户回答回答于

在启动内环之前,添加:

ar[i].resize(2*A - 1);
用户回答回答于

我认为这个声明本身就有问题。它是什么 ?

你是对的。你有一个二维矢量,你只通过声明来照顾单层:

vector<vector<int> > ar(l);

简单的解决方法是:

std::vector< std::vector<int> > ar(l, std::vector<int>(l));

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问6 回答
  • o o

    4 粉丝495 提问5 回答
  • 找虫虫

    5 粉丝0 提问5 回答
  • uncle_light

    5 粉丝518 提问4 回答

扫码关注云+社区

领取腾讯云代金券