繁体   English   中英

索引复杂对象的最快集合类型

[英]Fastest Type of Collection of indexed complex Ocjects

我正在寻找最优雅、最快和最有效的方法来存储 class 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 中未设置数据类型。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM