首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我会遇到分段错误

为什么我会遇到分段错误
EN

Stack Overflow用户
提问于 2018-06-02 21:30:34
回答 1查看 103关注 0票数 -2

我正在尝试打印2D矩阵中的同心矩形图案。

然而,它向我展示了一个分段错误。我试着把所有的代码都写成注释。

我认为声明本身是有缺陷的。这是什么?

代码语言:javascript
复制
   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;
EN

回答 1

Stack Overflow用户

发布于 2018-06-02 21:47:43

问题是,虽然您创建了一个包含2*A - 1元素的向量,但这些元素中的每个元素都是一个空向量。因此,当您尝试访问元素的元素(两个下标)时,您访问的是不存在的内容。

一种解决方案是将这些空向量更改为具有假定元素数量的向量。在开始内循环之前,添加:

代码语言:javascript
复制
ar[i].resize(2*A - 1);

(如果A是固定的,您可能会发现std::array比向量更方便。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50657421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档