1

我有一个带有数组数组变量的类。

private  double * array[4][4];

我可以这样初始化吗?

void RealMatrix::init(int i, int j) {
    this->array[i][j] = new double;
    *(this->array[i][j]) = 0;
}
4

3 回答 3

1

是的你可以。但是,如果我站在你的立场上,我会摆脱double指针(除非有一些特定的原因你以这种方式做事)。

于 2013-03-04T14:40:03.787 回答
1

这将动态分配一个并将作为 2D 数组double元素的指针设置为指向该. 然后将值 0 分配给 that 。您可以在一行中执行此操作:[i][j]doubledouble

this->array[i][j] = new double(); // value-initialization

或者您可以更明确地将其设置为0

this->array[i][j] = new double(0); // direct-initialization

但是,除非您有充分的理由,否则您最好让数组成员包含doubles 而不是double*s:

double array[4][4];

除非您必须这样做,否则动态分配某些东西是没有意义的。我无法想象你有一个很好的理由来使用这么小的数组。

于 2013-03-04T14:42:45.610 回答
0

我会用一个vector<double>.

class Matrix {
    std::vector<double> values;
    const unsigned int width;
public:
    Matrix(unsigned int width, unsigned int height)
    : values(width * height), width(width) {
    }

    double& value(unsigned int i, unsigned int j) {
        return values[i + (width * j))];
    }
};

用法:

Matrix matrix(10, 20);
matrix.value(3, 4) = 15;
于 2013-03-04T14:57:56.170 回答