Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向用数组初始化的矩阵的指针数组_C++_C_Arrays_Pointers_Matrix - Fatal编程技术网

C++ 指向用数组初始化的矩阵的指针数组

C++ 指向用数组初始化的矩阵的指针数组,c++,c,arrays,pointers,matrix,C++,C,Arrays,Pointers,Matrix,我想使用指向矩阵的指针数组在不同的矩阵之间循环。我想使用数组变量初始化这些矩阵的行。由于不同的原因,我无法创建新类 更具体地说,我想要这样的东西: #define NUMBER_OF_MATRICES number-of-matrices-value int[SIZE][SIZE]* arrayOfPointersToMatrices[NUMBER_OF_MATRICES] = {&matrixM,&matrixY,&matrixX, &matrixZ}; 第一

我想使用指向矩阵的指针数组在不同的矩阵之间循环。我想使用数组变量初始化这些矩阵的行。由于不同的原因,我无法创建新类

更具体地说,我想要这样的东西:

#define NUMBER_OF_MATRICES number-of-matrices-value
int[SIZE][SIZE]* arrayOfPointersToMatrices[NUMBER_OF_MATRICES] = {&matrixM,&matrixY,&matrixX, &matrixZ};
第一点

#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, 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};
声明2d矩阵,如下所示:

int *matrix2d1[NUM_ROWS] = {row1, row2};
int *matrix2d2[NUM_ROWS] = {row3, row4};
int **matrix3d[NUM_MATRICES] = {matrix2d1, matrix2d2};
声明3d矩阵,如下所示:

int *matrix2d1[NUM_ROWS] = {row1, row2};
int *matrix2d2[NUM_ROWS] = {row3, row4};
int **matrix3d[NUM_MATRICES] = {matrix2d1, matrix2d2};
另一种选择(“正确”的方式)
我强烈建议使用向量。它们被烘焙到C++语言中,比所有数组/指针工作都容易得多。

但是编译器说我不能用这种方式初始化矩阵。“无法用int[16]类型的左值初始化int类型的数组元素”(原文如此)您看到我链接的代码了吗?它对我来说很好…也许你把它声明为错误的类型?它似乎起作用了。所以我假设对于矩阵部分,它应该是int**arrayOfMatrices[NumberOfMatrices]?我会试试的,小心点;有了这个声明,你们就进入了这个领域……是的,std库和其他数据结构比“我的”解决方案要好得多。我永远不会用指针来指向。。。都不是,但出于不同的原因,我不得不这么做,因为我想了很多,这就是为什么我为你们写了第一部分。第二个问题是针对未来任何一个有着相同问题但不同局限性的人。是的,在结束时,我被迫提出这个问题,因为我从未使用过这样的“数据结构”