C ++中访问坐标的数组

Array for visited co-ordinates in c++

我正在开发一个地图有 16000 X 9000 个单位的游戏,如果我在地图上的任何 X、Y 点,我最多可以看到 2000 个单位的半径。我想要一些可以管理我是否访问过特定区域的东西。主要问题是我应该采用布尔数组吗?访问过的 bool 太大 [16000*9000]。所以想要建议,谢谢。我是 Whosebug 的新手,如果我没有说到重点,请见谅。

使用 bool 类型的数组确实效率低下。主要是因为 C++ 中 bool 的大小可以非常大。 (在我的平台上,它有 8 位长,这意味着它的 7 位没有被使用。)C++ 标准没有指定 sizeof(bool).

的值

请考虑改用 std::vector<bool>:这是 std::vector 和 C++ 标准的显式特化 保证 这是紧凑的:即有没有浪费 space。如果您难以获得一个连续的内存块,您 可能 需要一个 std::vector<std::vector<bool>>。综上所述,有些人非常不喜欢 bool 向量专业化,因此在深入研究之前请仔细考虑这一点。(有一项运动考虑将其弃用!)

或者您可以自己 将图形的 区域合并为一组整数类型,例如 unsigned.

如果您需要发现的区域是圆形的(您对 'radius' 的使用暗示)您必须使用这个巨大的阵列,是的。

如果它不必是一个完美的圆,那么你可以简单地缩减采样:假设你使用 10 个块的粗糙度 - 那么你只需要一个 1600x90 大小的数组 - 与完美的圆相比减少了 100 倍.