街道和十字路口数据结构 [已关闭]

Streets and Intersections Data Structure [closed]

提问人:benny.bennett 提问时间:8/25/2013 最后编辑:Brian Tompsett - 汤莱恩benny.bennett 更新时间:11/20/2015 访问量:197

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

10年前关闭。

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

问题是:用于此目的的最佳数据结构类型是什么?显然,关系数据库将是一个不错的选择,但是如果我用 C++ 编写(不是这个问题的约束,但 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 的交叉点......应该有一个单独的对象来存储单个交叉点(和其他交叉点)吗?