提问人:benny.bennett 提问时间:8/25/2013 最后编辑:Brian Tompsett - 汤莱恩benny.bennett 更新时间:11/20/2015 访问量:197
街道和十字路口数据结构 [已关闭]
Streets and Intersections Data Structure [closed]
问:
我正在编写一个应该模拟城市的程序,我遇到的问题之一是如何存储大量互连的数据。例如,每个都有一个枚举(NORTH_ONE_WAY、EAST_WEST等)和其他属性。最重要的属性是每条街道都有一个列表(与它相交的街道的地图以及它相交的街区编号)。从这个数据结构中,我应该能够解析它并创建一个可视化(稍后会介绍,不是这个问题的一部分)。Street
direction
intersections
问题是:用于此目的的最佳数据结构类型是什么?显然,关系数据库将是一个不错的选择,但是如果我用 C++ 编写(不是这个问题的约束,但 C++ 实现将是一个加分项),我应该使用它吗?还有哪些其他数据结构可以用于此?
答:
0赞
Dietmar Kühl
8/25/2013
#1
您描述的数据结构是一个图形。例如,参见 Boost 的 BGL,了解在图上运行的通用库。请注意,这并不意味着您不会使用数据库:数据的存储和内存中的表示形式往往大不相同。实际表示形式往往取决于您要对数据执行的操作。
0赞
user2249683
8/25/2013
#2
只是不要在每个本地对象中维护关系。有一个“元”对象来评估这种关系,它可能会缓存这些关系。
一些阐述: 当然,一条街道应该知道它灯笼、漂亮的花园和十字路口。但它是任何事物的交集(没关系)。街道在十字路口可能有单车道或双车道(左转)。交集由一些更高的实例维护。
(向左车道司机道歉)
评论
0赞
benny.bennett
8/25/2013
你的意思是 Main St 不应该存储与 Fairfield 的交叉点,而 Fairfield 不应该存储与 Main 的交叉点......应该有一个单独的对象来存储单个交叉点(和其他交叉点)吗?
上一个:封装数据库访问是否是一种好做法
评论