【问题标题】:Fastest Type of Collection of indexed complex Ocjects索引复杂对象的最快集合类型
【发布时间】:2020-03-02 02:00:22
【问题描述】:

我正在寻找最优雅、最快和最有效的方法来存储 Point 类的多个对象,并在任何类型的集合中使用索引/键。

Point 包含indexposXposYareaneighborPoints[]AdjacentTriangles[] 等属性,用于创建 Delaunay-Triangulation 和 Voronoi-Mesh。
出于选择的原因,单点应该在集合中具有索引,但不需要排序。
在进行三角测量时,我正在创建删除点。我也想循环集合中的所有点。因此,应针对这些操作优化集合类型。

一开始我使用List<Point> 来存储点,并且列表中的出现与点的索引相同。如果删除列表中的一个点,我必须减少较高点的所有索引。这对我来说听起来很不方便而且很耗时。

这就是我后来尝试Dictionary<int, Point> 的原因。这里的索引是固定的,如果我删除例如第二个点,那么所有更高的点,可能Point[5] 保持Point[5],只是Point[1] 不再存在(返回是null)。然而,我的运行时间现在甚至更长(见图),尽管我不再需要进行索引移动。 (为什么是这样?)

使用Hashmap 对我来说毫无意义,从那以后我将无法使用像Point.posX 这样的调用(错误代码CS1061),因为在Hashmap 中没有设置数据类型。

您对性能更快的高效收集类型有什么建议吗?

【问题讨论】:

标签: c# list dictionary hashmap delaunay


【解决方案1】:

您可以沿希尔伯特曲线对点进行排序。 Bowyer-Watson 算法基本上使用希尔伯特曲线。

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2011-11-28
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多