【发布时间】:2015-11-17 09:14:40
【问题描述】:
当我尝试通过在 Swift 2 中实现一些基本的数据结构,例如 Linked/Doubly Linked/ Recycling Linked/Recycling 双链表、AVL 树、红黑树、B-Tree 和 Treap 时,我决定通过利用 Swift 2 的新特性来做这些事情:间接枚举,因为枚举使空节点和填充节点比类更具语义。
但是很快发现对于非循环链表,插入元素后返回插入的节点是没有意义的,因为返回的值是值类型而不是引用类型。据说不能通过将信息直接写入返回值来加速下一次插入,因为它是插入节点的副本,而不是对插入节点的引用。
更糟糕的是,改变基于间接枚举的节点意味着写入关联值的整串数据,这肯定会引入不必要的系统资源消耗,因为每个枚举情况下的关联值本质上是一个元组,即本质上是内存中的一种连续数据,与 struct 相同,但没有每个属性访问器来启用少量数据写入。
那么我应该使用哪一个来构建这样的基本数据结构?间接枚举或类?
【问题讨论】:
标签: algorithm swift data-structures swift2