具有动态行数和固定列数的2D数组的初始化.C++

Moo*_*min 3 c++ fixed multidimensional-array dynamic-arrays

我在使用C++创建2D动态数组时遇到问题.我希望它具有"行"的动态数字(例如numR)和固定的(例如2)数量的"列".

我尝试这样做:

const numC = 2;
int numR;
numR = 10;
double *myArray[numC];
myArray = new double[numR];
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用.是否有可能以这种方式做到这一点?

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

提前致谢.

fre*_*low 6

是否有可能以这种方式做到这一点?

是:

double (*myArray)[numC] = new double[numR][numC];
// ...
delete[] myArray;
Run Code Online (Sandbox Code Playgroud)

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

的类型new int[i][10]int (*)[10]

请注意,许多程序员不熟悉C声明符语法,并且不会理解此代码.此外,手动动态分配也不例外.对于这些方法,数组向量更好:

#include <vector>
#include <array>

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

替换std::arraystd::tr1::arrayboost::array取决于您的编译器.