2

以下制作旨在表示二维网格的地图的方法有哪些优点和缺点。网格应该能够在任何时候被填充,而无需为整个事物分配内存,这就是我不只使用二维数组的原因。

std::map<int, std::map<int, Tile*>* >* tiles;

std::map<std::pair<int, int>, Tile*>* tiles;

或者,如果您有其他更好的想法,请告诉我。如果这是一个经常被问到的问题,我很抱歉。

4

2 回答 2

2

它(显然)是一种不同的数据结构,取决于您如何访问它。

第一个更像是一个 2 级树结构。再次将 x 坐标映射到几个 y 坐标到几个图块。这可能听起来有点不适合您的问题。

第二个不允许您获取特定 x 坐标的所有元素(或者您可以调用它)。你可能不需要那个吗?

如果您需要将 (x,y) 坐标映射到图块,则第二种方法可能没问题。

于 2013-02-11T17:38:14.560 回答
0

为什么不使用向量的向量 std::vector< std::vector > ?

除非你的网格是稀疏的(不是网格中的每个元素都有一个 Tile),并且你想节省内存,否则会更好。如果速度是问题,使用向量的访问时间会好得多,因为 std::map 使用 tres 作为底层结构。

于 2013-02-11T17:58:31.043 回答