平铺地图的数据结构

时间:2011-08-27 18:32:20

标签: algorithm data-structures map

我想创建一个无限平铺地图,从(-max_int,-max_int)(max_int,max_int),所以我要创建一个基本结构:chunk,每个chunk包含{{} 1}}以及它char tiles[w][h]坐标,例如int x, y所以h=w=10位于tile(15,5) chunk(1,0)上,(5,5) coordinate位于tile(-25,-17)chunk(-3,-2)上{1}}依此类推。现在可以有任意数量的块,我需要存储它们并在(5,3)或更好(O(logn),如果可能的话......)中轻松访问它们。但它不是......)。它应该很容易:添加,删除??(不必)并查找。那么我应该使用什么数据结构?

2 个答案:

答案 0 :(得分:3)

读入KD树或四叉树(八叉树的2d变体)。这些都可能是一个很大的帮助。

答案 1 :(得分:0)

所以你的所有空间都被分成了块(矩形簇)。通常问题是将数据存储在稀疏(因为已经实现的集群)矩阵中。为什么不使用两级字典类容器呢?I.e。 rb-tree by row index其中value是rb-tree by column index。或者,如果你很幸运,你可以使用哈希来获得你的O(1)。在这两种情况下,如果找不到行,则在容器中分配它并创建新容器作为值,但最初只有一个块。当然,在现有行上分配新块将比在新行上分配更快,我想这是这种方法的唯一问题。