我有許多通過其二維座標標識的項目(有符號的短程)。每個項目都是包含64KB數據的類。任何時候都有大約500-1500件物品。項目通常在一個點附近以〜20爲一組。我的問題是,我應該如何映射它們,以便它不會佔用過多的內存。項目將被緩慢地添加/刪除(每秒1-10次),並且會經常提取,因此從列表中獲取元素(指向較大結構的指針)應該儘可能快。將二維空間中的物體映射到內存中
我想到的是,會有一些gridContainer類,讓我們說它會存儲64x64指針的矩形。我會有主網格容器,它將存儲其他gridContainer,並且此嵌套的gridContainer將存儲我想要映射的實際項目(這將允許4096x4096個實際項目)。爲了訪問一個特定的項目,例如[260,130],我將它除以64,並取商以查找父代gridContainer位置和其餘部分以找到嵌套的gridContainer位置。所以對於[270,145]我會有[4,2]和[14,17]。
我也在考慮使用stl的地圖,但我不知道它的內部結構,我不知道應該從中期望的性能。
對我的方法有任何建議,或者有沒有更好的方法來做到這一點?
你是什麼意思「快速從項目中刪除」? – lezebulon 2012-01-06 11:52:44
這篇[維基百科文章](http://en.wikipedia.org/wiki/Spatial_index)爲您的任務提供了很多變體。 – 2012-01-06 12:05:05
@lezebulon我希望能夠儘可能快地獲取項目(存儲在列表中的指針)。 – Sebi 2012-01-06 12:06:48