gpt4 book ai didi

c++ - 使用一维迭代访问二维数组

转载 作者:行者123 更新时间:2023-11-28 02:14:09 25 4
gpt4 key购买 nike

如果我定义一个数组如下:

int rows = 10;
int cols = 10;

double **mat;
mat = new double*[rows];
mat[0] = new double[rows*cols];

for(int r=1; r<10; r++)
mat[r] = &(mat[0][r*cols]);

如何通过一维遍历此数组?例如。我想执行以下操作:

mat[10] = 1;

达到同样的效果

mat[1][0] = 1;

有没有办法取消引用 double** 数组来做到这一点?

最佳答案

根据您对 mat 的定义,您可以这样做:

double* v = mat[0]; 'use v a uni-dimensional vector
for(int i =0; i< rows* cols; i++) v[i] = 1;

或者,如果您想要将 mat 本身定义为一维 vector ,并以一种巧妙的方式将其用作二维 vector :

double mat[rows * cols];
#define MAT(i, j) mat[i*cols + j]

MAT(1, 0) = 1;
<=>
mat[10] = 1

现在您可以选择使用 mat 跨越一维矩阵或使用 MAT 宏跨越二维

关于c++ - 使用一维迭代访问二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34560968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com