C++ - 1D中的动态数组工作,2D中的相同功能不起作用

mum*_*tei 4 c++ arrays

我的代码有问题.我有一些类的输入,nmax和mmax.这些在标题中定义为

int nmax;
int mmax;
Run Code Online (Sandbox Code Playgroud)

然后我有一些数组,在标题中定义为

double* Nline;
double** NMline;
Run Code Online (Sandbox Code Playgroud)

然后我想在主程序中分配它们.首先,我从输入中分配nmax和max值

nmax = nmax_in;
mmax = mmax_in;
Run Code Online (Sandbox Code Playgroud)

然后我分配数组

Nline = new double [nmax];
NMline = new double [nmax][mmax];
Run Code Online (Sandbox Code Playgroud)

问题是,1D阵列是这样分配的.但是2D数组没有 - 编译器写道:表达式必须具有常量值

为什么分配了NLine而NMline没有?

我理解,但我不知道如何在我的程序中这样做,为什么1D数组这个分配是好的.非常感谢您的帮助

Nem*_*ric 7

double** NMline;
Run Code Online (Sandbox Code Playgroud)

将声明指针指针数组,它不会声明2D数组.您需要首先为指针数组(指向行的指针)分配数据:

NMline = new double*[nmax];
Run Code Online (Sandbox Code Playgroud)

然后初始化每一行:

for(int i = 0; i < nmax; i++)
       NMline[i] = new double[mmax];
Run Code Online (Sandbox Code Playgroud)

不要忘记先删除所有行,然后删除NMline自身:

for(int i = 0; i < nmax; i++)
       delete [] NMline[i];
delete [] NMline;
Run Code Online (Sandbox Code Playgroud)