weixin_37847623
小QAQ白
采纳率80%
2018-06-06 02:50 阅读 7.9k

c++二维vector数组赋值的问题

10

建了一个二维数组(19*19):
图片说明

初始化:
图片说明

然后根据条件改值:
图片说明
赋值语句a[i] [j].safe=1;赋值成功,但是后面四行
a[i+1] f[j+1]a.safe=1;
a[i+1][j-1].safe=1;
a[i-1][j+1].safe=1;
a[i-1][j-1].safe=1;
却无法赋值(没有越界),这是为什么呢,有什么解决办法吗?
我是通过vs2010调试观察里面的值来看出后四行没有成功赋值的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    xfei_123 咫尺梦想 2018-06-06 10:01

    没有问题,下标没有越界。 码字不易,为下载资源,求给分。
    直接把表格打出来就知道了。

    初始状态
    图片说明

    i=1,j=2 对应5个位置是有赋值的
    图片说明

    i=17,j=17
    图片说明

    点赞 1 评论 复制链接分享
  • qq_35292710 qq_35292710 2018-06-06 03:02

    这个情况应该是因为越界造成的;
    检查你的数组在定义时的长度
    赋值的时候有没有越界。

    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-06-06 04:14

    你a虽然初始化了,但是a里面的元素没有初始化
    需要
    for (int i = 0; i < 19; i++)
    for (int j = 0; j < 19; j++)
    {
    loc l;
    a[i][j] = l;
    }
    也可以用push_back

    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-06-06 03:02

    a在哪里定义的,有没有19x19,哪里有vector,safe是什么类型

    点赞 评论 复制链接分享
  • xiaofang3a xiaofang3a 2018-06-06 03:06

    越界了,for循环,j = 17 的时候满足 j <18 ;j自增1为 18,18+1 = 19,导致数组越界了

    点赞 评论 复制链接分享
  • weixin_42325834 书香门第 2018-06-06 04:06

    你怎么知道没有改动呢?我看是改了的呀,你看position为0的元素的左上,左下,右上,右下四个元素都应该safe是1,难道不是吗?

    点赞 评论 复制链接分享
  • qq839306215 qq839306215 2018-06-06 09:31

    应该先临界点,0和18的情况,中间的位置和是这样的赋值

    点赞 评论 复制链接分享
  • qq_25087929 qq_25087929 2018-10-12 10:57

    vector初始化
    一维:vector array(4,0) //有四个0
    二维:vector >array(4,vector(4,0)) //有16个0,其中二维两个右尖括号中的空格在c++11以前需要打上

    点赞 评论 复制链接分享

相关推荐