使用new()初始化int [] []

Neo*_*low 1 c++

我是一个c ++新手.在学习的过程中我遇到了这个.

如果我有这样的指针

int (*a)[2][3]

cdecl.org将此描述为 declare a as pointer to array 2 of array 3 of int:

当我尝试

int x[2][3];

a = &x;

这很有效.

我的问题是我a在使用new()时如何初始化

a = new int [] [];

我试过一些组合但是没有把它弄得很对.

任何帮助将不胜感激.

izo*_*ica 5

您必须分两步完成 - 首先分配指针数组(动态分配的数组),然后依次分配每个指针.总的来说,我认为更好的选择就是使用std::vector- 这是C++做这种事情的首选方式.

这里仍然是一个如何实现你想要的例子:

int a**;
a = new int*[2];
for (int i =0; i< 2;++i){
  a[i] = new int[3]
}

... use them ...
// Don't forget to free the memory!
for (int i = 0; i< 2; ++i) {
  delete [] a[i];
}

delete [] a;
Run Code Online (Sandbox Code Playgroud)

编辑:并按照默认要求 - 矢量版本:

std::vector<std::vector<int> > a(2, std::vector<int>(3,0));

// Use a and C++ will take care to free the memory.
Run Code Online (Sandbox Code Playgroud)

  • 这完全是错误的.`int [2] [3]`是一块内存. (2认同)