我想實現類似於飛行控制遊戲的東西。將會有一組代表飛機的對象被隨機生成並移除。個別的飛機然後可以被觸摸,並會作出反應。當某些事物被觸及時,該模型應該將平面索引作爲參數。我應該使用什麼結構來存儲這些對象?
我的存儲要求是:
- 需要快速迭代所有元素
- 需要快速插入/缺失
需要由指數
- 快速查找和項目應該採取什麼我用?
NSMutableArray
,NSMutableSet
? - 我應該在兩個地方存儲每個對象嗎? (例如,設置爲快速迭代,Array用於快速查找)?
- 快速查找和項目應該採取什麼我用?
我想實現類似於飛行控制遊戲的東西。將會有一組代表飛機的對象被隨機生成並移除。個別的飛機然後可以被觸摸,並會作出反應。當某些事物被觸及時,該模型應該將平面索引作爲參數。我應該使用什麼結構來存儲這些對象?
我的存儲要求是:
需要由指數
NSMutableArray
,NSMutableSet
?NSMutableArray
如果您只想按索引查找就足夠了。問題可能是需要O(n)的刪除。當您不需要索引持久性時,可以通過將項目中的最後一項刪除並將數組縮小1來刪除索引持久性。
在這種情況下存儲在兩個位置會很慢,因爲它會在搜索速度上沒有任何優勢,但需要維護兩個容器。
在兩個地方存放似乎很傻。一個數組應該沒問題,用o(n)迭代,o(1)按索引查找。我不熟悉Objective-C知道刪除或插入速度,但如果使用某些系統級別的陣列複製設施,兩者應該足夠快。
我第二次發表您的意見。 'NSMutableArray'現在應該沒問題。還要注意'NSMutableArray'不是一個標準數組,所以你不應該盲目地在那裏應用你的標準計算機科學知識。見http://ridiculousfish.com/blog/archives/2005/12/23/array/。 – Yuji 2010-12-12 15:27:48
如果'NSMutableArray'結果不夠快,容器可以稍後調換。因此,將容器的細節用於程序的一小部分中非常重要,以便稍後可以輕鬆地交換實現。 – Yuji 2010-12-12 15:29:09
@Yuji這是很好的建議,謝謝。 – Robert 2010-12-12 16:12:04