我应该使用什么结构来存储这些对象?

问题描述:

我想实现类似于飞行控制游戏的东西。将会有一组代表飞机的对象被随机生成并移除。个别的飞机然后可以被触摸,并会作出反应。当某些事物被触及时,该模型应该将平面索引作为参数。我应该使用什么结构来存储这些对象?

我的存储要求是:

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

    • 快速查找和项目应该采取什么我用? NSMutableArrayNSMutableSet
    • 我应该在两个地方存储每个对象吗? (例如,设置为快速迭代,Array用于快速查找)?

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

在两个地方存放似乎很傻。一个数组应该没问题,用o(n)迭代,o(1)按索引查找。我不熟悉Objective-C知道删除或插入速度,但如果使用某些系统级别的阵列复制设施,两者应该足够快。