我有一个带有数组数组变量的类。
private double * array[4][4];
我可以这样初始化吗?
void RealMatrix::init(int i, int j) {
this->array[i][j] = new double;
*(this->array[i][j]) = 0;
}
答案 0 :(得分:1)
是的,你可以。但是,如果我在你的鞋子里,我会摆脱double
指针(除非你有一些具体的理由以这种方式做事)。
答案 1 :(得分:1)
这将动态分配单个double
并将2D数组的元素[i][j]
的指针设置为指向double
。然后它将值0赋给double
。您可以在一行中执行以下操作:
this->array[i][j] = new double(); // value-initialization
或者您可以使用以下内容更明确地将其设置为0
this->array[i][j] = new double(0); // direct-initialization
但是,除非你有充分的理由,否则让你的数组成员包含double
而不是double*
s可能会更好:
double array[4][4];
除非必须,否则动态分配一些东西毫无意义。我无法想象你有一个如此小的阵列的充分理由。
答案 2 :(得分: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;