大小未知的瓦片数组

Tilemap array of unknown size

本文关键字:数组 未知      更新时间:2023-10-16

我希望用户选择那里的地图大小,所以我不知道在运行时地图的大小。我一直在寻找如何实现这一点,但收效甚微。最接近于工作的是vector变体,但当它运行时,它仍然不能正常工作。

我想要一个三维数组,所以在我的头文件中,我像这样声明了tilemap

std::vector<std::vector<std::vector<Tile>>> tileMap;

并在类中测试它,像这样:

World::World(int width, int height, int depth)
{
tileMap.resize(width);
tileMap[0].resize(height);
tileMap[0][0].resize(depth);
tileMap.resize(width);
for (int i = 0;i<width;i++)
{
    tileMap[i].resize(height);
}

for (int y = 0; y < height;y++)
{
    for (int x = 0; x < width; x++)
    {
        tileMap[x,y].resize(depth);
    }
}
std::cout << sizeof tileMap / sizeof tileMap[0][0][0] << std::endl;
}

我知道不是数组的所有维度都正确地调整了大小,但最后一行只是输出"0"。

是否有更好的方法来创建未知大小的瓷砖图?我需要很多尺寸,比如64*64、256*256、64*1024等(z级将在生成关卡后确定)。因此,为每种大小创建一个数组似乎效率低下。但也许有一个更好的方式来声明我的数组或我做错了什么地方。

您想让tileMap.size() * tileMap[0].size() * tileMap[0][0].size()获得瓷砖的数量