array

array的实质是一个记录,可动态扩展大小,初始的索引为0(注意其他数据类型索引初始值为1)


-record(array, {size :: non_neg_integer(),  %% number of defined entriesmax  :: non_neg_integer(),  %% maximum number of entries%% in current treedefault,  %% the default value (usually 'undefined')elements :: elements(_)         %% the tuple tree}).

方法调用示例:

1)array:new/0,array:new/1,array:new/2 :
%当使用new方法时,若是指定了size,则创建的array为fix-size类型,若是没有指定default值,则默认为undefined值.弱均为默认值,则最后的element值直接显示有多少个默认值.
1> A=array:new().
{array,0,10,undefined,10}
2> A1=array:new(10).
{array,10,0,undefined,10}
3> A2=array:new(10,{default,-1}).
{array,10,0,-1,10}
4> 2)array:fix/1 , array:relax/1 :
%使用fix可将自动扩展类型转变为固定大小类型,relax则是相反
1>array:fix(A).
{array,0,0,undefined,10}
2>array:relax(A1).
{array,10,10,undefined,10}3)array:default/1 :
%可以获取array的default值
1>array:default(A2).
-14)from_list/1 , from/list/2 :
%将list转变为array类型
1> A=array:from_list([1,2,3,4,5,6]).
{array,6,10,undefined,{1,2,3,4,5,6,undefined,undefined,undefined,undefined}}
2> B=array:from_list([1,2,3,4,5,6],-1).
{array,6,10,-1,{1,2,3,4,5,6,-1,-1,-1,-1}}5)from_orddict/1 , from_orddict/2 :
%将orddict转变为array类型
1> array:from_orddict([{1,2},{3,4}]).
{array,4,10,undefined,{undefined,2,undefined,4,undefined,undefined,undefined,undefined,undefined,undefined}}
2>array:from_orddict([{1,2},{3,4}],-1).
{array,4,10,-1,{-1,2,-1,4,-1,-1,-1,-1,-1,-1}}6)foldl/3 , foldl/3 :
%可以对array从左或是从右开始,对数据进行操作.注意的是Function需要满足定义的形式
1> A=array:from_list([1,2,3,4,5,6]).
{array,6,10,undefined,{1,2,3,4,5,6,undefined,undefined,undefined,undefined}}
2>Function= (fun(Index,Value,Acc) -> [Value+Value|Acc] end).
3> array:foldl(Function,[],A).
[12,10,8,6,4,2]
4> array:foldr(Function,[],A).
[2,4,6,8,10,12]7)get/2 :
%获得对应index的值
1>array:get(2,A).
38)is_array/1
%判断是否为array
1>array:is_array(A).
true9)is_fix/1
%判断是否为固定长度的array
1>A=array:new(10).
{array,10,0,undefined,10}
2>array:is_fix(A).
true
3>B=array:relax(A).
{array,10,10,undefined,10}
4>array:is_fix(B).
false10)map/2 :
%与foldl,foldr相似,均是逐一遍历
1>Function=(fun(Index,Value) -> Value*Value end).
2)array:map(Function,A).
{array,6,10,undefined,{1,4,9,16,25,36,undefined,undefined,undefined,undefined}}11)reset/2 :
%重置对应index位置的值,该值为默认值
1>array:reset(2,A).
{array,6,10,undefined,{1,2,undefined,4,5,6,undefined,undefined,undefined,undefined}}12)resize/1 resize/2
%重置大小
1>array:resize(5,A).
{array,5,10,undefined,{1,2,3,4,5,6,undefined,undefined,undefined,undefined}}13)set/3
%设置对应位置的值
1>array:set(8,8,A).
{array,9,10,undefined,{1,2,3,4,5,6,undefined,undefined,8,undefined}}14)size/1
%获得array的大小值
1>array:size(A).
615)to_list/1 , to_orddict/1
%转换成list或是orddict
1>array:to_list(A).
[1,2,3,4,5,6]
2>array:to_orddict(A).
[{0,1},{1,2},{2,3},{3,4},{4,5},{5,6}]16)sparse_foldl/3 , sparse_foldr/3 , sparse_map/2 , sparse_size/1 , sparse_to_list/1
sparse_to_orddict/1
%以上方法主要的特点是可以略过默认值
1>B=array:set(8,8,A).
{array,9,10,undefined,{1,2,3,4,5,6,undefined,undefined,8,undefined}}
2>array:to_list(B).
[1,2,3,4,5,6,undefined,undefined,8]
3>array:sparse_to_list(B).
[1,2,3,4,5,6,8]

Erlang数据结构篇 -- array相关推荐

  1. 看得见的数据结构Android版之数组表(数据结构篇)

    零.前言: 一讲到装东西的容器,你可能习惯于使用ArrayList和数组,你有想过ArrayList和数组的区别吗? Java的类起名字都不是随便乱起的,一般前面是辅助,后面是实质:ArrayList ...

  2. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  3. 线性表的顺序存储结构(数据结构篇)

    笔记:数据结构篇 线性表 顺序表 知识点 1:线性表(linear list)是具有相同特征的数据元素的一个有限序列. 2:线性表用二元组(D,R) D={ai|1<=i<=n,ai为El ...

  4. python的类程序的结构_Python程序员学习路径之数据结构篇

    原标题:Python程序员学习路径之数据结构篇 点击标题下「异步图书」可快速关注 在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大.Python语言的语法简单,交互性强.用Python来讲 ...

  5. Java入门算法(数据结构篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

  6. python excel取数 生成报告_python读取excel表格生成erlang数据

    为了将excel数据自动转换成所需要的erlang数据,听同事说使用python会很方便简单,就自学了两天python,写了一个比较粗糙的python脚本,不过能用,有什么优化的地方请指教 代码如下: ...

  7. 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 3.0 ETH数据结构篇

    3.0 ETH数据结构篇 在以太坊中,有三棵树的说法,分别是状态树.收据树和交易树.了解了这三棵树,就弄清楚了以太坊的基础数据结构设计. 而以太坊实现的是一个"平台性"的应用,其复 ...

  8. 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊数据结构篇1--状态树1,对应肖老师视频:click here 全系列笔记请见:click here 以太坊数据结构篇1--状态树2请 ...

  9. C语言数据结构篇——单循环链表的创建,插入,节点删除,打印等操作

     作者名:Demo不是emo  主页面链接:主页传送门 创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CS ...

最新文章

  1. 中jsp加载不出来layui_为何渔具厂生产不出来钓鱼人理想中的鱼竿呢,厂家说臣妾做不到啊...
  2. vue3.0环境搭建
  3. cookie和url参数获取的常规实用方法合集(ES6)
  4. HDU1874(Dijstra算法)
  5. quartus将modelsim,synplify和quartus联合起来使用进行的FPGA设计(转)
  6. C++ 使用extern C简单使用
  7. 路考步骤七步走 科目三考试一定没问题!
  8. BZOJ3064 CPU监控
  9. UVA 10129 Play on Words
  10. Microsoft强大团队(源代码)管理工具--TFS2010 与vs结合
  11. Windows系统下使用Jenkins自动化发布.NET core程序到Linux平台下利用Docker快速启动
  12. plsql保持长连接_知乎千万级高性能长连接网关是如何搭建的
  13. 【Three.js】模型抗锯齿处理
  14. 网站静态化处理--总述(1)
  15. 社交网络分析初步学习1.md
  16. 二极管主要特性及伏安特性曲线
  17. ie select option css,ie浏览器不支持select option italic
  18. canonical的概念用途及用法详细解说,seo不可不看!
  19. 程序员常用资源工具集合
  20. vue created 无效

热门文章

  1. Win7下eclipse ADT调试cocos2dx-lua工程
  2. MySQL的普通索引和唯一索引到底什么区别?
  3. 弱网测试(ios手机自带)
  4. android圆角glide,Glide加载圆角图片的方法
  5. 计算机的ip地址和用户名和密码是什么原因,电脑的ip地址账户和密码忘记怎么办...
  6. 创意发明:基于stm32的微型掌上示波器 设计说明书电路及源代码
  7. 用计算机写作文主题,用计算机写作文教学设计.doc
  8. 关于html,body{height:100%}的理解
  9. 【oracle】 字段属性为 date 的相关操作
  10. 8个身家百万的儿童创业者