说我需要一个二维数组,在运行时设置第一维尺寸,在编译时将第二维尺寸设置为5。 因为我们可以执行此操作来初始化大小未知的一维数组 我想使以下代码正常工作 注意: 我需要将第二维设置为5,而不是第一维。因此,我需要能够执行 我知道我可以将 我知道我可以使用vector等STL容器,因此请避免此类回答。 答案 0 :(得分:3) 您可以写: 然后,您可以访问诸如 除最里面的尺寸外,所有尺寸都必须在编译时知道。如果 NB。考虑使用int* arr;
arr = new int[12];
int* arr[5];
arr = new int[12][5];
arr[11][4]
但不能执行arr[4][11]
。arr
设为int**
,然后将2d数组分配给arr,因此请避免这样的答案。1 个答案:
int (*arr)[5];
arr = new int[12][5];
arr[11][4]
之类的元素。但是不是您在问题中建议的arr[12][5]
,数组是零索引的,最大元素索引比维小1。5
实际上是要表示运行时值,那么您不能使用C样式的数组来完成此任务。unique_ptr
进行安全的内存管理。该代码为auto arr = std::make_unique<int[][5]>(12);
。