我有一个 Matrix 类,我想将一个数组传递给构造函数,以便动态设置矩阵的值。我发现如果我这样分配一个数组:
double **array;
array = new double*[3];
array[0] = new double[2];
array[1] = new double[2];
array[2] = new double[2];
array[0][0] = 1;
array[0][1] = 1;
array[1][0] = 1;
array[1][1] = 1;
array[2][0] = 1;
array[2][1] = 1;
我可以使用如下方法获取行数和列数:
int getNRows(double **data){
int size = 0;
while(*(data+size)){size++;}
return size;
}
int getNCols(double **data){
int size = 0;
while(**(data+size)){size++;}
return size;
}
这样可以吗,还是我应该坚持 vector 声明?
最佳答案
您依赖于未定义的行为;无法保证超出数组边界时会发生什么。这通常不起作用。
使用 std::vector
或其他容器类。
关于c++ - 这是查找动态分配数组长度的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8320297/