首页 > 解决方案 > C++ 二维数组

问题描述

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

Chunk[][] chunks;

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

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

chunks = new Chunk[15][25];

或者我应该着手制作一个大数组,而只是将未设置的索引设置为 VOID 瓦片,我可以简单地制作。

谢谢大家的帮助!

标签: c++arrays

解决方案


C++ 不像 C 那样支持变长数组。现代的、惯用的 C++ 也不鼓励使用std::vectoror上的原始数组std::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,据我所知,它只允许在初始化期间使用常量。


推荐阅读