erlang-gb_tree,gb_set
gb_tree, gb_set, 均为一个二叉树。具体怎么实现,这边不在累赘,官方有手册,
how to use ? 才是我们的重点
1. 初始化
1> gb_trees:empty().
{0,nil}
> gb_sets:empty().
{0,nil}
3>
这样即可完成初始化
2. 插入
gb_trees:insert/3
gb_sets:insert/2
3> gb_trees:insert(1,{1,100}, v(1)).
{1,{1,{1,100},nil,nil}}
4> gb_sets:in
insert/2 intersection/1 intersection/2
5> gb_sets:insert({1,100}, v(2)).
{1,{{1,100},nil,nil}
注意的是 gb_trees:insert(Key, Value, Trees).
gb_set:insert(Tuple, Sets).
3. 删除
6> gb_trees:delete(1, v(3)).
{0,nil}
7> gb_sets:del
del_element/2 delete/2 delete_any/2
7> gb_sets:delete(1, v(5)).
** exception error: no function clause matching gb_sets:delete_1(1,nil) (gb_sets.erl, line 408)
in function gb_sets:delete_1/2 (gb_sets.erl, line 409)
in call from gb_sets:delete/2 (gb_sets.erl, line 406)
8> gb_sets:delete({1,100}, v(5)).
{0,nil}
gb_trees:delete/2 根据主键删除
gb_sets:delete/2 根据tuple 删除
4.查询
gb_trees:lookup/2,
gb_trees:lookup(1, v(3)).
{value,{1,100}}
因为gb_sets 是在一切数据已知的情况下操作的,所以不存在查询操作
12> gb_sets:is_member({1,100},v(5)).
true
13>
5.求长度
gb_trees:size(v(3)).
1
gb_sets:size(v(5)).
1
6. 遍历
15> gb_trees:iterator(v(3)). 先获取一个gb_trees的迭代树
[{1,{1,100},nil,nil}]
16> gb_trees:next(v(15)). 根据迭代数,不断的去迭代,
{1,{1,100},[]}
gb_sets 也是一样的操作
但是他还有一个更好的函数 叫fold ,有兴趣的可以去看看哦,
这就是语法题gb_trees, gb_sets 的使用
erlang-gb_tree,gb_set的更多相关文章
- 安装及运行 RabbitMQ 服务器 (linux) 失败! 安装erlang 失败,无法继续
文档 http://www.rabbitmq.com/install-rpm.html 安装前置条件 Before installing RabbitMQ, you must install Erla ...
- 安装RabbitMQ编译erlang时,checking for c compiler default output file name... configure:error:C compiler cannot create executables See 'config.log' for more details.
checking for c compiler default output file name... configure:error:C compiler cannot create executa ...
- 在Windows用Rebar来构建,编译,测试,发布Erlang项目
rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译.测试.发布 Erlang 应用 ...
- erlang节点互相ping,一个能ping通,另外一个不行。
今天发现一个问题,2个erlang节点,1个主动ping另外一个不通,然后等待另外一个ping过来,2个节点才连通.记录一下. 首先,erlang节点的cookie是一致的.查了文档,cookie一致 ...
- [Erlang06]在Erlang shell怎么在目录A下编译目录B下的文件,并把生成文件统一放置目录C?
问题描述: 我们想快速测试一个小功能,第一个反应就是打开Erl shell 直接输入,但是当想测试一个复杂的函数时,一般会写成一个*.erl文件,然后在shell下: cd(FileDir). c(F ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- Erlang:[笔记二,构建工具rebar之发布应用]
概述 通过rebar可以发布rebar构建的erlang项目,生成可执行的二进制脚本文件,大大降低了执行应用的复杂度.该笔记Erlang环境为Erlang/OTP 19 ,以下适用于Eralng/OT ...
- Erlang:[笔记一,构建工具rebar之编译]
Rebar概述 Rebar是一款Erlang构建工具,使用它可以方便的编译,测试erlang程序和打包erlang发行版本.Rebar其实是一个独立的erlang脚本,默认情况下,Rebar会按照Er ...
- 安装RabbitMQ,一直提示Erlang版本过低
1.背景 windows系统,控制面板卸载Erlang后,重新安装Erlang成功,当再安装RabbitMQ时,报如下提示: 意思就是说Erlang版本过低,请安装更高的版本. 出现上面问题的原因,是 ...
随机推荐
- QT创建TCP Socket通信
最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO.为了测试是否能与VS2012下的程序进行通信,在VS2012下建立一个客户端程序,进行通信测试,发现可以 ...
- js 二维数组 for 循环重新赋值
javascript 二维数组的重新 组装 var arr = [[1,2],[3,4],[5,6],[7,8]]; var temp = new Array(); for(var i= 0 ;i&l ...
- Mysql BLOB、BLOB与TEXT区别及性能影响、将BLOB类型转换成VARCHAR类型
在排查公司项目业务逻辑的时候,见到了陌生的字眼,如下图 顺着关键字BLOB搜索,原来是Mysql存储的一种类型,从很多文章下了解到如下信息 了解 MySQL中,BLOB字段用于存储二进制数据,是一个可 ...
- Python爬虫(二)——对开封市58同城出租房数据进行分析
出租房面积(area) 出租房价格(price) 对比信息 代码 import matplotlib as mpl import matplotlib.pyplot as plt import pan ...
- luoguP1850 换教室
luoguP1850 换教室 链接 https://www.luogu.org/problemnew/show/P1850 思路 状态很显然就是f[n][k][0/1] 前i次,用了k次机会,当前是在 ...
- SPSS for Mac 安装教程
Step1 下载安装文件 链接:https://pan.baidu.com/s/1M5Eh7ph3ys6mHRbAn_h_Wg 提取码:o0m7 Step2 解压安装 将下载好的压缩包解压,点击SPS ...
- Codeforces 587 E. Duff as a Queen
题目链接:http://codeforces.com/contest/587/problem/E 其实就是线段树维护区间线性基,合并的时候注意一下.复杂度${O(nlog^{3})}$ #includ ...
- Redis出现的问题
1):Could not connect to Redis at 127.0.0.1:6379: Connection refused 分析: 1-1:虚拟机中的 6379 端口可能没有开启 查看虚拟 ...
- docker 安装mysql示例
docker pull mysql 错误的启动: [root@localhost ~]# docker run --name mysql01 -d mysql 42f09819908bb72dd99a ...
- Windows下安装python的scipy等科学计算包(转)
如果要使用python进行科学计算.数据分析等,一定要安装scipy.seaborn.numpy等等包. 但Windows下安装python的第三方库经常会出现问题.此前,已介绍过Windows下如何 ...