我有一个带有数组数组变量的类。
private double * array[4][4];
我可以这样初始化吗?
void RealMatrix::init(int i, int j) {
this->array[i][j] = new double;
*(this->array[i][j]) = 0;
}
我有一个带有数组数组变量的类。
private double * array[4][4];
我可以这样初始化吗?
void RealMatrix::init(int i, int j) {
this->array[i][j] = new double;
*(this->array[i][j]) = 0;
}
是的你可以。但是,如果我站在你的立场上,我会摆脱double
指针(除非有一些特定的原因你以这种方式做事)。
这将动态分配一个并将作为 2D 数组double
元素的指针设置为指向该. 然后将值 0 分配给 that 。您可以在一行中执行此操作:[i][j]
double
double
this->array[i][j] = new double(); // value-initialization
或者您可以更明确地将其设置为0
:
this->array[i][j] = new double(0); // direct-initialization
但是,除非您有充分的理由,否则您最好让数组成员包含double
s 而不是double*
s:
double array[4][4];
除非您必须这样做,否则动态分配某些东西是没有意义的。我无法想象你有一个很好的理由来使用这么小的数组。
我会用一个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;