erlang 数据结构 -- gb_trees

本文介绍了Erlang中的gb_trees数据结构,它是一个基于AA树实现的key-value存储,适用于大量有序数据。重点讨论了gb_trees的特性,如使用平衡树确保查找效率,并列举了几个关键函数:balance()用于手动平衡树,iterator/1和next/1提供迭代操作,以及map/2函数。相较于dict,gb_trees提供了有序性优势,适合需要有序且规模较大的场景。
摘要由CSDN通过智能技术生成
1. 今天是gb_trees

1.1 key-value 数据结构
1.2. AA树实现, (AVL, RB-tres, AA 树区别看:地址
1.3. 定义: {Size, Tree} — Tree:: 有元素为 {Key, Value, Smaller::Tree, Bigger::Tree} 或者空树nil组成
1.4. ==来判断是否相同, 也就是说1, 1.0 是一个键值
1.5 用来存储大量数据(有序的)

2. 函数(一些值得注意的函数)

2.1 balance(Tree1) -> Tree2
用来重新平衡树, 一般情况下,不需要调用这个函数。 除非有很多删除操作, 而期间又没有插入操作的时候, 可以手动调用,因为delete操作后不会重新平衡树。 重新平衡树可以减少查找的时间.

2.2 iterator/1 next/1
迭代操作, 官方说这个函数遍历的执行时间略差于gb_trees:to_list 之后遍历的时间, 但是好处在于不需要一下子生成一个长列表
1> G1 = gb_trees:insert(1, a, gb_trees:empty()).
{1,{1,a,nil,nil}}
2> It = gb_trees:iterator(G1).
[{1,a,nil,nil}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值