这是查找动态分配数组长度的好方法吗?

Eri*_*nez 0 c++ arrays pointers dynamic

我有一个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;
Run Code Online (Sandbox Code Playgroud)

我可以使用如下方法获取行数和列数:

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;
}
Run Code Online (Sandbox Code Playgroud)

这样可以,还是应该坚持使用矢量声明?

Oli*_*rth 5

你依赖于未定义的行为; 当你超出数组的范围时,无法保证会发生什么.这一般不起作用.

使用a std::vector或其他容器类.