我正在尝试使用二维数组和PNG图像制作基本的块加载系统。我只是想知道是否可以创建一个未初始化的数组。
Chunk[][] chunks;
,然后根据PNG图片的大小对其进行初始化,并使用不同的rgb像素代表不同的图块。
假设图像的大小为15x25,是否可以用这样的形式初始化二维数组?
chunks = new Chunk[15][25];
或者我应该制作一个大型数组,而只是将未设置的索引设置为VOID磁贴,我可以简单地进行制作。
谢谢大家的帮助!
答案 0 :(得分:0)
C ++不像C那样支持可变长度数组。现代的惯用C ++还会不鼓励使用std::vector
或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
不同,据我所知,{{1}}仅允许在初始化过程中使用常量。