2010-12-12 142 views
0

我想實現類似於飛行控制遊戲的東西。將會有一組代表飛機的對象被隨機生成並移除。個別的飛機然後可以被觸摸,並會作出反應。當某些事物被觸及時,該模型應該將平面索引作爲參數。我應該使用什麼結構來存儲這些對象?

我的存儲要求是:

  1. 需要快速迭代所有元素
  2. 需要快速插入/缺失
  3. 需要由指數

    • 快速查找和項目應該採取什麼我用? NSMutableArrayNSMutableSet
    • 我應該在兩個地方存儲每個對象嗎? (例如,設置爲快速迭代,Array用於快速查找)?

回答

1

NSMutableArray如果您只想按索引查找就足夠了。問題可能是需要O(n)的刪除。當您不需要索引持久性時,可以通過將項目中的最後一項刪除並將數組縮小1來刪除索引持久性。

在這種情況下存儲在兩個位置會很慢,因爲它會在搜索速度上沒有任何優勢,但需要維護兩個容器。

+0

我第二次發表您的意見。 'NSMutableArray'現在應該沒問題。還要注意'NSMutableArray'不是一個標準數組,所以你不應該盲目地在那裏應用你的標準計算機科學知識。見http://ridiculousfish.com/blog/archives/2005/12/23/array/。 – Yuji 2010-12-12 15:27:48

+1

如果'NSMutableArray'結果不夠快,容器可以稍後調換。因此,將容器的細節用於程序的一小部分中非常重要,以便稍後可以輕鬆地交換實現。 – Yuji 2010-12-12 15:29:09

+0

@Yuji這是很好的建議,謝謝。 – Robert 2010-12-12 16:12:04

0

在兩個地方存放似乎很傻。一個數組應該沒問題,用o(n)迭代,o(1)按索引查找。我不熟悉Objective-C知道刪除或插入速度,但如果使用某些系統級別的陣列複製設施,兩者應該足夠快。

相關問題