我是靠谱客的博主 花痴秀发,最近开发中收集的这篇文章主要介绍Lua学习笔记(六)—— 数组与集合,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、 数组

a) 新建一个数组

 

b) 用长度操作符(#)来获取数组的长度

 

c) 可以使用01其他任意值来作为数组的起始索引

 

二、 矩阵与多维数组

a) 有两种方式来表示数组

i. 第一种,使用数组的数组

 

ii. 第二种,将两个索引合并为一个索引

1. 如果索引是整数

 

2. 如果索引是字符串,可以把索引拼接起来,中间使用一个字符来分割

 

 

b) 稀疏矩阵

i. 定义

通常应用程序会用到一种特殊的举证,称为稀疏矩阵,这种矩阵中的大多数元素为0nil,稀疏矩阵是很浪费空间的,而在lua中,数组时以table来表示的,它们本身就是稀疏的,所以只需要为非nil的元素付出空间,所以lua中稀疏矩阵式不会浪费空间的

ii. 遍历

因为在稀疏矩阵的长度太大,所以直接对稀疏矩阵使用长度操作符是非常低效的,所以一般使用pairs且只遍历那些非nil的元素

 

iii. 注意

Table中的key是无序的,所以使用pairs的迭代并不保证会按递增的次序来访问元素

三、 链表

a) 创建链表

i. 要实现一个基础的链表,其中每个节点具有两个字段:nextvalue

ii. 先创建一个用作列表头结点的变量:list = nil,在表头插入一个元素,元素值为v: list = {next = listvalue = 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) Concatio.read(“*all”)实现原理

 

 

七、 图

a) 图的实现

 

b) 使用图


最后

以上就是花痴秀发为你收集整理的Lua学习笔记(六)—— 数组与集合的全部内容,希望文章能够帮你解决Lua学习笔记(六)—— 数组与集合所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部