c++中的二维整数数组

2-D Integer Array in C++

本文关键字:二维 整数 数组 c++      更新时间:2023-10-16

我试图在c++中创建一个堆上的二维整数数组。我错了:

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

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

错误:初始化时无法将'int*(*)[6]'转换为'int**'

我已经找到了有效的方法来创建一个2-D数组,但我只是好奇上面到底发生了什么,错误意味着什么?

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

这应该是很少需要的。最好将数组包装在面向问题的类中,并使用智能指针管理该类的堆分配对象。