[英]Fastest Type of Collection of indexed complex Ocjects
我正在寻找最优雅、最快和最有效的方法来存储 class Point
的多个对象,并在任何类型的集合中使用索引/键。
Point
包含index
、 posX
、 posY
、 area
、 neighborPoints[]
、 AdjacentTriangles[]
等属性,用于创建 Delaunay-Triangulation 和 Voronoi-Mesh。
出于选择的原因,单点应该在集合中有一个索引,但不需要排序。
在进行三角测量时,我正在创建和删除点。 我还想遍历集合中的所有点。 因此,应针对这些操作优化集合类型。
一开始我使用List<Point>
来存储点,并且列表中的出现与点的索引相同。 如果删除列表中的一个点,我必须减少较高点的所有索引。 这对我来说听起来很不方便且耗时。
这就是我后来尝试Dictionary<int, Point>
的原因。 这里的索引是固定的,如果我删除例如第二个点,那么所有更高的点,也许Point[5]
保持Point[5]
,只是Point[1]
不再存在(返回是null
)。 然而,我的运行时间现在更长了(见图),尽管我不再需要进行索引移动了。 (为什么是这样?)
使用Hashmap
对我来说毫无意义,从那时起我将无法使用Point.posX
(错误代码 CS1061)之类的调用,因为在 Hashmap 中未设置数据类型。
您对性能更快的高效集合有什么建议吗?
您可以沿希尔伯特曲线对点进行排序。 Bowyer-Watson 算法基本上使用希尔伯特曲线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.