C++ 在连续内存块中动态创建二维数组

C++ 在连续内存块中动态创建二维数组,c++,C++,我试图在一个连续内存块中创建2D数组,但它给出了M个连续块,每个块的大小为N int **arr = new int*[M]; for (int i = 0 ; i < M ; i++ ) { arr[i] = new int[N]; } int**arr=newint*[M]; for(int i=0;i

我试图在一个连续内存块中创建2D数组,但它给出了M个连续块,每个块的大小为N

int **arr = new int*[M];
for (int i = 0 ; i < M ; i++ )
{
     arr[i] = new int[N];
}
int**arr=newint*[M];
for(int i=0;i
如何在连续内存块中创建2D数组?

int*buffer=new int[M*N];
int *buffer=new int[M*N];
int **arr=new int*[M];
for(int i=0;i<M;++i)
    arr[i]=buffer+i*N;
整数**arr=新整数*[M];
对于(int i=0;如果想要创建某个类的对象数组,我会使用这种方法吗?我在这里看不到任何问题。构造函数只调用一次。是的。我注意到了。顺便问一下,我在想,我们能不能让它适用于非默认构造函数,数组中的每个对象都应该用不同的值初始化?在这种情况下,我们将有使用placement new,但不是为指针分配空间,而是为对象本身分配空间。因此,我们只为TObject[MN]分配空间,然后MN次调用“new(&TObject[index])(something)”,如果值不同,则为“something”可能是一个带有一些参数的函数…请不要自己这样做。使用boost::multi_array。是的,不要学习任何新的东西,请像monkey一样编写代码。