[英]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.