我一直在谷歌上看这个并阅读SDK文档中的Collections条目,但没有透露任何信息。是否有开发用的iOS SDK的BST(任何变体)实现?
从一个主要的开发平台中缺少一些基本的东西似乎很奇怪。他们的哈希实现是否那么神奇?或者开发人员假设没有人会对有订单的东西进行插入/删除?
我现在可以使用NSSet
,因为我知道我们大多数人(包括我自己)并没有在iOS上编写任何需要保证访问时间的大量计算,但它仍然在啃着我。
答案 0 :(得分:6)
CFBinaryHeap看起来非常有前途和有用,但它可能不是你想要的,因为它不是真正的二叉搜索树而是heap。它们是相似的,但不一样,所以我觉得Core Foundation的CFTree类可能会好一些。以下是CFTree类引用的描述:
使用CFTree创建表示层次化信息组织的树结构。在这样的结构中,每个树节点只有一个父树(除了根树,没有父树),并且可以有多个子树。
如果你对C不熟悉(Core Foundation是C,而不是Objective-C),你可以使用JKPTree库,它是CFTree的Objective-C包装器。您可以下载here。
我刚刚找到另一个名为CHDataStructures的库,它简化了各种数据结构的创建。它支持以下数据结构(以及许多其他未列出的数据结构):
堆
您可以下载CHDataStructures here。
答案 1 :(得分:0)
CoreFoundation可以使用CFBinaryHeap类型。它没有Obj-C包装,但有点C从不伤害任何人。
答案 2 :(得分:0)
如果使用std::set
扩展名(Objective-C ++模式)命名文件,则可以使用C ++标准库中的.mm
。
答案 3 :(得分:0)
它不是Cocoa Touch,但GNU Objective-C collections library有Red-Black Tree和抽象Binary Tree,还有一堆其他非树集合的东西。