街道和交叉口数据结构

时间:2013-08-24 18:54:26

标签: c++ database data-structures language-agnostic

我正在编写一个应该模拟城市的程序,我遇到的一个问题是如何存储大量互连数据。例如,每个Street都有一个direction枚举(NORTH_ONE_WAY,EAST_WEST等)和其他属性。最重要的属性是每条街道都有一个intersections列表(与它相交的街道地图以及它相交的街区号)。从这个数据结构中,我应该能够解析它并创建一个可视化(后来出现,而不是这个问题的一部分)。

问题是:用于此目的的最佳数据结构类型是什么?显然关系数据库是一个不错的选择,但如果我用C ++编写(不是这个问题的约束,但C ++实现会是一个加分),我应该使用它吗?还有哪些其他数据结构可以用于此目的?

2 个答案:

答案 0 :(得分:0)

您描述的数据结构是图形。有关在图表上运行的通用库,请参阅,例如Boost's BGL。请注意,这并不意味着您不会使用数据库:数据存储和内存中表示往往相当不同。实际表示往往取决于您想要对数据做什么。

答案 1 :(得分:0)

只是不要在每个本地对象中维护关系。有一个'meta'对象评估关系,它可以缓存这些。

一些阐述: 当然,一条街应该知道它的灯笼,美丽的花园和十字路口。但这是一个交叉点(无关紧要)。街道可能在交叉路口有一条车道或一条双车道(左转弯)。交叉点由更高的实例维护。

(对左车道司机道歉)