C ++中的二维整数数组

时间:2016-06-26 04:39:16

标签: c++ arrays

我正在尝试在C ++中的Heap上创建一个2-D整数数组。我错误地做了这个:

int** a = new int*[5][6];

IDE没有显示任何错误,但在编译时我收到以下错误:

  

错误:无法在初始化

中将'int *(*)[6]'转换为'int **'

我找到了创建二维数组的有效方法,但我只是好奇上面究竟发生了什么,错误是什么意思?

1 个答案:

答案 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>;

这确实很少需要。更喜欢将数组包装在面向问题的类中,并使用智能指针管理所述类的堆分配对象。