gpt4 book ai didi

c++ - 从 C/C++ 中的 ** 矩阵中提取行/列

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:08 25 4
gpt4 key购买 nike

我有一个方阵double **A

我知道如何遍历这个矩阵:

for (int i = 0; i < MATRIX_SIZE; i++) {
for (int j = 0; j < MATRIX_SIZE; j ++) {
int val = A[i][j];
printf("val: %d\n", val);
}
}

但是,我想知道如何将整行或整列分配给一个变量,因为我有这个 ** 矩阵(** 指针指向废话仍然有点困惑。我相信它说的是 double 列表)。

为了添加更多背景知识,我尝试提取行和列,以便执行 cuda 矩阵乘法。我在网上看到很多使用一维 vector 表示矩阵的文档(即 double* A)但是,我对 **

感到困惑

最佳答案

二维 double 组 (double **) 可以看作是一维 double 组的一维数组。

double **arr; // properly initialized
for(int rowNumber = 0; rowNumber < MATRIX_SIZE; ++rowNumber)
{
double *row = arr[rowNumber];
// do something with this row
for(int colNumber = 0; colNumber < MATRIX_SIZE; ++colNumber)
{
double value = row[colNumber];
// do something with value
}
}

在上面的示例中,row 是指向初始数组中连续值行的指针。这是可行的,因为二维数组通常是这样分配的:

double **arr = new double*[ROW_COUNT];
for(int rowNumber = 0; rowNumber < ROW_COUNT; ++rowNumber)
{
arr[rowNumber] = new double[COL_COUNT];
}

获取指向矩阵中列的指针(就像我们在上面对 row 所做的那样)是不可能的,因为列中的值不连续,只有每行中的值是连续的。

关于c++ - 从 C/C++ 中的 ** 矩阵中提取行/列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385101/

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