c++ - 将 double* 一维矩阵转换为 double** 二维方阵

标签 c++ c arrays matrix

我有一个矩阵的一维表示:类型

double *A1d;

您可以假设此数据结构是malloc'd 并填充了 double 值,并且长度为 MATRIX_SIZE * MATRIX_SIZE

我想将此数据结构转换为 double** 类型的二维方阵,行/列长度为 MATRIX_SIZE

我正在寻找类似的东西:

double** A2D = vector_to_matrix(int sz, double* matrix_1d); 

最佳答案

double** vector_to_matrix(int sz, double* matrix_1d) {
  // The output 2d matrix to be returned.
  double** matrix_2d = (double**)malloc(sz * sizeof(double*));

  // Allocate memory.
  for (int i = 0; i < sz; i++)
    matrix_2d[i] = (double*)malloc(sz * sizeof(double));

  // Copy from 1d matrix.
  for (int i = 0; i < sz; i++)
    for (int j = 0; j < sz; j++) matrix_2d[i][j] = matrix_id[i * sz + j];

  return matrix_2d;
}

关于c++ - 将 double* 一维矩阵转换为 double** 二维方阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498573/

相关文章:

C++ cin一直在跳

当函数返回它时,C++ vector 实例是可操作的

c - 打印变量类型结构元素

c - 我如何返回我用 malloc 分配的指针的大小?

python - 迭代和访问 numpy 数组元素的最快方法?

C#:创建一个数组,然后批量分配变量

c++ - 随机快速排序 [某些输入崩溃]

C++-SDL : Limiting framerate issue

c - 使用打开的文件描述符

javascript - useState 如何迭代数组