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

标签 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;

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

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/

相关文章:

c++ - Clang 10 无法在 macOS 10.12 上将 C++ 应用程序与 CMake 链接

c# - 是否可以沙盒化并运行在浏览器的文本字段中输入的 C++ 或 C# 代码?

c++ - assert 语句在 C++ 中不起作用

c# - 将二维数组的一行发送到 C# 中的函数

c++ - 编程项目介绍。坚持从表创建数据文件

c - 从不兼容指针类型/解引用指针到不完整类型的赋值

c++ - 工厂方法在这里合适吗?

arrays - Pandas:从 numpy 数组中填充数据框列的缺失值

c++ - 将唯一指针指向共享指针是否可以?

c - 将 32 位值分配给无符号 uint8_t 数组