Lua 数据结构 (数组/矩阵/多维数组/链表/队列/字符串缓冲)

个人感觉LUA语言的简洁高效,正是在于同一变量用于不同类型,表格可以便利的实现各种数据结构,后面通过元表(元表)面向对象

1.数组

a = {} for i = -5 5做一个[i] = 0结束

初始化数组的索引可以是任意值,但是LUA习惯使用1作为数组开始的下标,LUA库和长度操作符都遵循这个习惯,如果不是从1开始就不能使用这些功能,#一个获取数组长度

2.矩阵和多维数组

a = {} for i = 1 10 do a [i] = {} for j = 1 10 do a [i] [j] = 0 end end

再table [1]的位置存储的是一个table []数组;再次table中key是无序的,所以使用pairs的迭代并不保证提交次序来访问,基于这种特性可以很简便的创建“稀疏矩阵”

3.链表

列表= {下次=列表中,值= V};

4.队列

列表= {}; - 为了避免污染全局名称空间,创建目录表来存储队列操作

函数List.new()返回{first = 0,last = -1}结束

fucntion List.pushfirst(list,value)

本地优先= list.first-1

list.first =第一

列表[第一] =值;

结束

fucntion List.pushlast(list,value)

本地最后= list.last + 1

list.last =最后

列表[最后] =值;

结束

函数List.popfirst(list)

本地优先= list.first;

如果第一次> list.last然后错误(“列表为空”)结束

本地值=列表[第一]

列表[第一] =零

list.first =第一+ 1;

返回值

结束

5.字符串缓冲(逐行读取一个文件)

本地buff =“”

对于io.lines()中的行来说

抛光轮=抛光轮+ .. ..线” \ n”个

结束

以这种方式读取一个几百ķ的字符串可能要移动几十个GB的数据,性能非常低,可以使用table.contact(表)连接起来

本地线= {}

为l在io.lines()做

线[#线+ 1] = 1 ..” \ n”个

结束

本地str = table.contact(行)

你可能感兴趣的:(Lua)