【发布时间】:2023-04-11 08:34:02
【问题描述】:
假设我需要一个二维数组,第一维大小在运行时设置,第二维大小在编译时设置为 5。
因为我们可以这样做来初始化一个未知大小的一维数组
int* arr;
arr = new int[12];
我想让下面的代码工作
int* arr[5];
arr = new int[12][5];
注意:
我需要将第二个维度设置为 5,而不是第一个维度。所以我需要能够做到arr[11][4] 而不是arr[4][11]。
我知道我可以将arr 设为int**,然后将二维数组分配给arr,所以请避免这样的答案。
我知道我可以使用vector等STL容器,所以请避免这样的回答。
【问题讨论】:
-
I know I can make arr an int** and then assign a 2d array to arr, so please avoid such answer.-- 为什么? --I know I can use STL containers such as vector, so please avoid such answer.-- 为什么? -
我知道用螺丝刀可以拧螺丝,所以请避免这样的回答
-
问题中有很多“我知道”。- 究竟是什么问题?
-
既然我们可以这样做来初始化一个未知大小的一维数组——我认为这是对二维数组可以做什么的误解开始的地方。跨度>
-
这不是大多数 C++ 程序员用来声明二维动态数组的惯用语。混淆可以只用两行代码——行数无关紧要。
标签: c++ arrays c++11 pointers multidimensional-array