【发布时间】:2013-12-16 13:59:51
【问题描述】:
我阅读了 this page 关于 Scala 集合的时间复杂度的文章。正如它所说,Vector 对于所有操作的复杂性是eC。
这让我想知道Vector 是什么。我读了document,上面写着:
由于向量在快速随机选择和快速随机函数更新之间取得了很好的平衡,因此它们目前是 不可变索引序列的默认实现。它由 分支因子为 32 的小端位图矢量树。 局部性非常好,但不连续,这对非常有好处 大序列。
与 Scala 的其他所有内容一样,它非常模糊。 Vector 究竟是如何工作的?
【问题讨论】:
-
继续你的陈述就像关于 Scala 的其他一切一样,你关于 Scala 向量的问题也很模糊。你到底想听到什么关于矢量的信息?高级描述非常好,对于低级细节,查看sources 是有意义的。
-
再一次,如果他有兴趣知道表面之下是哪种数据结构,那么源代码将无济于事(鉴于稀疏的 cmets),因为您基本上应该已经知道算法和结构来理解它。
-
实际上,这非常具有描述性。实现分支因子为 32 的位映射向量树的方法并不多。也许可以添加“变异”元素创建从元素到根的直线数组的副本,但真的没有那么多的源代码(当然是可用的)。
-
当前文档 (2.13.6) 说,“向量由宽度为 32 的基数平衡手指树实现。”
标签: scala data-structures