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用作循环中的限制器)但我想尽可能避免它.
提前致谢.
是否有可能以这种方式做到这一点?
是:
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::array为std::tr1::array或boost::array取决于您的编译器.
| 归档时间: |
|
| 查看次数: |
5106 次 |
| 最近记录: |