【发布时间】:2014-05-04 21:55:25
【问题描述】:
我在其他地方读到NSMutableArray 以几种不同的方式实现,具体取决于大小,有时以2-3 tree 的形式实现,而不仅仅是内存中的数组。这意味着像删除对象这样的操作并不像必须将数组的整个尾端复制一个那样昂贵。
我想知道是否有实现的快速摘要,这样我就不必深入研究源代码了。
- 数组是如何排序的?
- 根节点是否在数组的中间?
- 数组如何找到第n个元素?
- 还有其他优点吗 将数组实现为 2-3 树而不是快速删除 数组前面附近的对象?
搜索互联网,我找不到任何讨论将可变数组实现为树的内容。
编辑:简短回答: NSMutableArray 似乎是作为循环缓冲区实现的,所以这个问题没有任何意义。如果将数组实现为 2-3 树有优势,我仍然想知道它。
【问题讨论】:
-
这是一篇围绕它进行讨论的文章:ridiculousfish.com/blog/posts/array.html
-
实施细节是实施细节。如果您可以通过 Foundation 挖掘并找到将它们实现为 2-3 棵树的特定类,那么您可以将其分解并了解更多信息。但据我们所知,它已被删除或修改。
-
要清楚,我并没有试图确定 NSMutableArray 的内部实现,我相信它可以正常工作,相反,我实际上想知道为什么将数组实现为2-3 树(在 NSMutableArray 或任何语言的任何其他数组中)。换句话说,我读到它是这样实现的,然后问自己“他们为什么要这样做?”。
标签: objective-c arrays data-structures tree nsmutablearray