我正在尝试在C ++中的Heap上创建一个2-D整数数组。我错误地做了这个:
int** a = new int*[5][6];
IDE没有显示任何错误,但在编译时我收到以下错误:
错误:无法在初始化
中将'int *(*)[6]'转换为'int **'
我找到了创建二维数组的有效方法,但我只是好奇上面究竟发生了什么,错误是什么意思?
答案 0 :(得分:0)
C ++中的固定大小数组拼写为std::array
:
std::array<std::array<int,5>,6> arr;
可变大小数组拼写为std::vector
:
std::vector<std::vector<int>> arr;
你几乎不应该将new
用于其中任何一个(或其他任何地方)。但如果你真的需要,没问题:
auto arr = new std::array<std::array<int,5>,6>;
这确实很少需要。更喜欢将数组包装在面向问题的类中,并使用智能指针管理所述类的堆分配对象。