概述
一、 数组
a) 新建一个数组
b) 用长度操作符(#)来获取数组的长度
c) 可以使用0、1或其他任意值来作为数组的起始索引
二、 矩阵与多维数组
a) 有两种方式来表示数组
i. 第一种,使用“数组的数组”
ii. 第二种,将两个索引合并为一个索引
1. 如果索引是整数
2. 如果索引是字符串,可以把索引拼接起来,中间使用一个字符来分割
b) 稀疏矩阵
i. 定义
通常应用程序会用到一种特殊的举证,称为“稀疏矩阵”,这种矩阵中的大多数元素为0或nil,稀疏矩阵是很浪费空间的,而在lua中,数组时以table来表示的,它们本身就是稀疏的,所以只需要为非nil的元素付出空间,所以lua中稀疏矩阵式不会浪费空间的
ii. 遍历
因为在稀疏矩阵的长度太大,所以直接对稀疏矩阵使用长度操作符是非常低效的,所以一般使用pairs且只遍历那些非nil的元素
iii. 注意
Table中的key是无序的,所以使用pairs的迭代并不保证会按递增的次序来访问元素
三、 链表
a) 创建链表
i. 要实现一个基础的链表,其中每个节点具有两个字段:next和value
ii. 先创建一个用作列表头结点的变量:list = nil,在表头插入一个元素,元素值为v: list = {next = list,value = v}
iii. 遍历此列表
local l = list
while l do
l = l.next
end
四、 队列与双向队列
a) 实现队列的一种简单方法是使用table库的函数insert 和 remove。这两个函数可以在一个数组的任意位置插入或删除元素,并且根据操作要求移动后续元素,不过对于较大的结构,移动的开销是很大的。
b) 一种更高效的实现是使用两个索引,分别用于首尾的两个元素
五、 集合与无序组
a) 包的概念
包,有时也称为“多重集合”,与普通的集合的不同之处在于其每个元素可以出现多次
六、 字符串缓冲
a) 在lua中,我们可以将一个table作为字符串的缓冲。其关键是使用函数table.concat,它会将给定列表中的所有字符串连接起来,并返回连接的结果
b) Concat函数还有第二个可选的参数,可以指定一个插在字符串间的分隔符。有了这个分隔符的参数,就不必每行后插入一个“n”了
c) Concat和io.read(“*all”)的实现原理
七、 图
a) 图的实现
b) 使用图
最后
以上就是花痴秀发为你收集整理的Lua学习笔记(六)—— 数组与集合的全部内容,希望文章能够帮你解决Lua学习笔记(六)—— 数组与集合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复