c++ - 未知大小的 Tilemap 数组

标签 c++ multidimensional-array visual-studio-2012 sfml

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

我想要一个 3 维数组,所以在我的标题中我声明了这样的 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”。

有没有更好的方法来创建未知大小的 tilemap?我需要很多尺寸,例如 64*64、256*256、64*1024 等(z 级别将在生成级别后确定)。因此为每个大小创建一个数组似乎效率低下。但也许有更好的方法来声明我的数组,或者我在某处做错了什么。

最佳答案

您需要 tileMap.size() * tileMap[0].size() * tileMap[0][0].size() 来获取图 block 的数量。

关于c++ - 未知大小的 Tilemap 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464620/

相关文章:

C++ 将字符串字母转换/转换为整数值 (ASCII)

c++ - 使用stdio.h C++ 中的函数remove(..) 时出现问题

c++ - 声明一个没有大小的多维数组

c++ - 如何在二维数组中写入这个模式?

c# - 无法在 Visual Studio Ultimate 2012 上安装 BenchmarkDotNet 0.10.2

c# - 有没有办法让 MySQL 与 Visual Studio 2012 Express 一起工作?

visual-studio - 什么是 .sln.ide 文件?

c++ - C++ Builder中的OnClick事件签名问题

c++ - 如何在具有大端架构的机器上测试您的代码?

php - 在数据库中用foreach循环保存多维数组