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

标签 c++ c arrays pointers matrix

我想使用指向矩阵的指针数组在不同矩阵之间循环。我希望使用数组变量初始化这些矩阵的行。由于各种原因,我无法创建新类(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/

相关文章:

c++ - (避免)在 C++ 中将代码拆分为 .cpp 和 .h 并进行高效编译

javascript - 无法访问嵌套不可变对象(immutable对象)中的数组

c++ - 在现代 x86 硬件上编写比特流的最快方法

c++ - 运算符重载

c - 我如何停止阻塞?

c - 无符号整数运算问题

c - 在 C 中打印字符数组

html - token 数组的 Xslt 大小( token 化、 token 数量)

c++ - 对指针使用输出流重载运算符

c - 如何设置进程C的状态终止?