c++ - 具有动态行数和固定列数的二维数组的初始化。 C++

标签 c++ multidimensional-array fixed dynamic-arrays

我在用 C++ 创建二维动态数组时遇到了问题。我希望它具有动态数量(例如 numR)的“行”和固定(例如 2)数量的“列”。

我试过这样做:

const numC = 2;
int numR;
numR = 10;
double *myArray[numC];
myArray = new double[numR];

不幸的是,它不起作用。有可能以这种方式做到吗?

当然,我可以使用 double **myArray 并将其初始化,就好像两个维度都是动态的(使用 numC 作为循环中的限制器),但我想尽可能避免它。

提前致谢。

最佳答案

Is it possible to do it in such a way?

是的:

double (*myArray)[numC] = new double[numR][numC];
// ...
delete[] myArray;

这可能看起来有点不寻常,但 5.3.4 §5 明确指出:

the type of new int[i][10] is int (*)[10]

请注意,许多程序员不熟悉 C 声明符语法,也不会理解这段代码。此外,手动动态分配不是异常安全的。由于这些原因,数组 vector 更好:

#include <vector>
#include <array>

std::vector<std::array<double, numC> > vec(numR);
// ...
// no manual cleanup necessary

std::array 替换为 std::tr1::arrayboost::array,具体取决于您的编译器。

关于c++ - 具有动态行数和固定列数的二维数组的初始化。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4256817/

相关文章:

c++ - 大整数隐式截断为无符号类型 [-Woverflow]

algorithm - 重访 : 2D Array Sorted Along X and Y Axis

php - 将 MySQL 结果填充到网格中

css - 适合 Angular2 应用程序的 p-galleria primeNg 上的图像

c++ - char 和 char[1] 的区别

c++ - 在 Qt Eventloop 启动之前,我的代码如何接收信号

css - 修复了 IE9 下的菜单中断

css - 过渡期间闪烁的固定背景

c++ - gcc include命令坏了?

javascript - 从循环中动态创建 Javascript 数组