Clojure中的矢量使用什么数据结构?

时间:2014-03-23 00:52:13

标签: data-structures vector clojure

Clojure使用什么数据结构来实现其矢量类型?

我问,因为他们有一些有趣的复杂属性。索引它们很便宜(O(log32(N))),你可以得到一个新副本,任何项目都可以便宜地更改。

这会让我认为它是基于(非常宽的)树,但这无法解释为什么添加到一端而不是另一端便宜。您也不能在向量中间廉价地插入或删除元素。

1 个答案:

答案 0 :(得分:4)

是的,它们是宽阔的树木。 http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation.htmlhttp://hypirion.com/musings/understanding-persistent-vector-pt-1是两篇文章系列,更详细地介绍了它们的工作原理。