为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用new在C ++中声明二维数组?

如何使用new在C ++中声明二维数组?

慕无忌1623718 2019-05-25 15:24:18
如何使用new在C ++中声明二维数组?如何使用new声明二维数组?就像,对于“普通”数组,我会:int* ary = new int[Size]但int** ary = new int[sizeY][sizeX]a)不工作/编译和b)没有完成什么:int ary[sizeY][sizeX]确实。
查看完整描述

4 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

int** ary = new int[sizeY][sizeX]

应该:


int **ary = new int*[sizeY];

for(int i = 0; i < sizeY; ++i) {

    ary[i] = new int[sizeX];

}

然后清理将是:


for(int i = 0; i < sizeY; ++i) {

    delete [] ary[i];

}

delete [] ary;

编辑:正如Dietrich Epp在评论中指出的那样,这并不是一个轻量级的解决方案。另一种方法是使用一个大的内存块:


int *ary = new int[sizeX*sizeY];


// ary[i][j] is then rewritten as

ary[i*sizeY+j]


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 2131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信