加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 动态分配3d数组

发布时间:2020-12-16 10:46:17 所属栏目:百科 来源:网络整理
导读:关于动态分配3d数组我有点困惑.现在,我只是像这样分配一大块内存: int height = 10;int depth = 20;int width = 5;int* arr;arr = new int[height * width * depth]; 现在我想更改3D数组中的值,例如: //arr[depth][width][height]arr[6][3][7] = 4; 但是,
关于动态分配3d数组我有点困惑.现在,我只是像这样分配一大块内存:

int height = 10;
int depth = 20;
int width = 5;

int* arr;
arr = new int[height * width * depth];

现在我想更改3D数组中的值,例如:

//arr[depth][width][height]
arr[6][3][7] = 4;

但是,我无法使用上面的代码来更改值.如何使用单个索引访问位置深度= 6,宽度= 3,高度= 7的元素?

arr[?] = 4;

有没有更好的方法来动态分配3D数组?

解决方法

索引到平坦的三维数组:

arr[x + width * (y + depth * z)]

其中x,y和z分别对应于第一维,第二维和第三维,宽度和深度是阵列的宽度和深度.

这是x y * WIDTH z * WIDTH * DEPTH的简化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读