C ++二维数组

时间:2019-01-30 16:06:58

标签: c++ arrays

我正在尝试使用二维数组和PNG图像制作基本的块加载系统。我只是想知道是否可以创建一个未初始化的数组。

Chunk[][] chunks;

,然后根据PNG图片的大小对其进行初始化,并使用不同的rgb像素代表不同的图块。

假设图像的大小为15x25,是否可以用这样的形式初始化二维数组?

chunks = new Chunk[15][25];

或者我应该制作一个大型数组,而只是将未设置的索引设置为VOID磁贴,我可以简单地进行制作。

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

C ++不像C那样支持可变长度数组。现代的惯用C ++还会不鼓励使用std::vectorstd::array之上的原始数组,它们也可以用于2D中,例如:

std::size_t x = /* get X dimension */
std::size_t y = /* get Y dimension */
std::vector<std::vector<Chunk>> chunks(x, std::vector<Chunk>(y));

std::vector还具有自动大小管理和可变长度初始化程序的允许性的优点,与std::array不同,据我所知,{{1}}仅允许在初始化过程中使用常量。