stxxl map <int,string =“”> </int,>

时间:2012-06-24 19:56:51

标签: database indexing spatial stxxl

我正在寻找一个二维索引点的存储空间。更多 具体来说,我想在OpenStreetMap中存储方式(或边)的几何 并让它可搜索。对存储的查询将基于路径的两个端点查找几何。将运行此查询以重建找到的路径的几何 通过类似于Dijkstra的算法,因此几何查找的速度很重要。

我的案例中的节点只是无符号整数,几何可以编码为字符串或 作为点的向量,无论哪种方式都可行。

节点数量大约为10亿,因此保留内存中的所有内容都不起作用,因此找到基于外部或磁盘的存储将会很不错。

我已经尝试过Stxxl,但它似乎不支持非POD类型,如字符串或 矢量作为价值观。

提前感谢您的建议

1 个答案:

答案 0 :(得分:0)

您可以通过维护两个单独的向量来模拟地图行为。比如说,您有两个<key, value><0, "hello"><1, "world">。然后第一个vector (of char)包含,

h, e, l, l, o, \0, w, o, r, l, d, \0

第二个vector (of pair of two 'size_type's)包含每个begin position的{​​{1}}和one past end position

string

正如您所看到的,<0, 6>, <6, 12> 之后不需要"world"。这样,对于任何新的"hello"对,您只需更新第二个向量中的 开始和结束位置 索引访问) ,并将值放在第一个向量的 结束 无需转移)。

编辑:您可以使用<key, value>代替vector (of pair of two 'size_type's),这可以弥补我猜的更好的解决方案。随便挑选。