gpt4 book ai didi

c++ - C++ 中的矩阵类 : An Explanation

转载 作者:行者123 更新时间:2023-11-30 02:58:25 28 4
gpt4 key购买 nike

我目前正在浏览一些旧的大学 C++ 代码片段。那时,另一个类(class)中的一个被分配使用双指针和二维数组来做一个矩阵类(class)。幸运的是(或者事后看来不幸)我从来没有机会学习那样的东西。我毕业时借用了他们的代码以备将来复习。如果有人可以向我解释这段代码中究竟发生了什么:

  //This is a constructor of a 1x1 matrix
signal::signal(){
_nrows = 1;
_ncols = 1;
_coef = new double*[_nrows];
_coef[0] = new double[_ncols];
_coef[0][0] = 0.0;
}

只是旁注,_coef 是 double 类型的 **。

据我了解,_nrows 和 _ncols 的值为 1(表示它们的大小)。然后,代码在堆中动态创建一个 double* out,其元素等于 _nrows;问题是,我不完全知道接下来会发生什么。为什么_ncols对应的数组不是指针呢?为什么要分配_coef[0]?

最佳答案

在内存中,一个二维数组(n,m)大概是这样的

_coef -> | _coef[0] -> {1, 2, 3, ..., m}
| _coef[1] -> {1, 2, 3, ..., m}
| _coef[2] -> {1, 2, 3, ..., m}
| ...
| _coef[n] -> {1, 2, 3, ..., m}

_coef 指向一个 n 指针数组。这些指针中的每一个都指向一个 m double 组。

因此,在您的例子中,_coef 指向一个包含 1 个指针的数组,而这个指针指向一个包含 1 个 double 的数组。

现在回答你的问题

  1. 它不是指针,因为在你的第二个维度中,你最终要存储的是 double 值,而不是指针。
  2. 它被分配给 _coef[0],因为它是二维数组的第一行,也是唯一一行。

关于c++ - C++ 中的矩阵类 : An Explanation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671349/

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