我想使用指向矩阵的指针数组在不同矩阵之间循环。我希望使用数组变量初始化这些矩阵的行。由于各种原因,我无法创建新类(class)。
更具体地说,我想要这样的东西:
第一点
#define SIZE size-value
int row1MatrixM [SIZE]= {1,2,3,4,5,1,2,3,4,5};
int row2MatrixM [SIZE] = {2,4,5,7,8,9,10,11,12};
...
然后:
matrixM= {row1MatrixM, row2MatrixM, row3MatrixM .... };
但是编译器说我不能用这种方式初始化矩阵。
现在我有:
matrixM, matrixY, matrixX, matrixZ, etc.
然后我想使用指针访问它们,所以我需要一个指针数组(一个指向 M 的指针,一个指向 Y 的指针,等等)
所以我试着写这样的东西:
#define NUMBER_OF_MATRICES number-of-matrices-value
int[SIZE][SIZE]* arrayOfPointersToMatrices[NUMBER_OF_MATRICES] = {&matrixM,&matrixY,&matrixX, &matrixZ};
我尝试了 [] 和 ** 的不同组合,但似乎没有一个有效。我正在寻找一种允许我访问带括号的指针数组(3D 数组)的类型:
arrayOfPointersToMatrices[x][y][z]
最佳答案
让你的代码工作:
像这样声明数组:
int row1 [NUM_COLS]= {1,2,3,4,5,1,2,3,4,5};
int row2 [NUM_COLS] = {2,4,5,7,8,9,10,11,12};
像这样声明二维矩阵:
int *matrix2d1[NUM_ROWS] = {row1, row2};
int *matrix2d2[NUM_ROWS] = {row3, row4};
像这样声明 3d 矩阵:
int **matrix3d[NUM_MATRICES] = {matrix2d1, matrix2d2};
替代方案(“正确”方式)
我会高度高度高度建议使用 vector 。它们融入了 C++ 语言,并且比所有这些数组/指针工作要简单得多。
关于c++ - 指向用数组初始化的矩阵的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48470719/