【问题标题】:Streets and Intersections Data Structure [closed]街道和交叉口数据结构
【发布时间】:2013-08-24 18:54:26
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      只是不要在每个本地对象中维护关系。有一个评估关系的“元”对象,它可能会缓存这些。

      一些阐述: 一条街道当然应该知道它有灯笼、漂亮的花园和十字路口。但它是任何事物的交叉点(没关系)。街道在交叉路口可能有单车道或双车道(左转)。交集由更高的实例维护。

      (向左车道司机道歉)

      【讨论】:

      • 您的意思是 Main St 不应该存储与 Fairfield 的交叉点,Fairfield 不应该存储与 Main 的交叉点......应该完全有一个单独的对象来存储单个交叉点(以及其他交叉点)?
      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      相关资源
      最近更新 更多