我遇到了一些代码,它们使用以下方法分配2d数组:
auto a = new int[10][10];
Run Code Online (Sandbox Code Playgroud)
这在C++中是否有效?我搜索了几本C++参考书,但没有人提到这种方法.通常我会手动完成分配,如下所示:
int **a = new int *[10];
for (int i = 0; i < 10; i++) {
a[i] = new int[10];
}
Run Code Online (Sandbox Code Playgroud)
如果第一种方法有效,那么首选哪种方法?
Gal*_*lik 19
第一个例子:
auto a = new int[10][10];
Run Code Online (Sandbox Code Playgroud)
这将多维数组或数组数组分配为连续的内存块.
第二个例子:
int** a = new int*[10];
for (int i = 0; i < 10; i++) {
a[i] = new int[10];
}
Run Code Online (Sandbox Code Playgroud)
这不是一个真正的多维数组.事实上,它是一个指针数组,需要两个间接来访问每个元素.
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |