C ++中堆上的2D矩阵分配

Wol*_*tan 5 c++ heap memory-management matrix

我正在寻找一种在堆中元素在内存中连续的堆上分配2D(m x n)矩阵的方法。目前,我知道有两种方法可以做到这一点:

第一种方法

int* M = new int[m * n];
Run Code Online (Sandbox Code Playgroud)
  • 优点:M罐头的大小由动态确定。
  • 缺点:建立索引M有点麻烦。(M[i * m + j]

第二种方法

typedef int dim[2];
dim* M = new dim[n];
Run Code Online (Sandbox Code Playgroud)
  • 优点:索引M就是我想要的样子。
  • 缺点:第一维(m)的大小无法动态设置。

有没有一种方法可以在堆上动态分配2D矩阵,我可以在其中索引元素,[i][j] 并且内存分配是连续的?

我知道使用一个类对此很有用,但是我特别在寻找一种如上所述的方法。