表标准库

简介: 表标准库

表标准库提供了操作序列的一些常用函数


table.insert

函数 table.insert 向序列的指定位置插入一个元素,其他元素依次后移。例如,对于列表 t = {10, 20, 30} ,在调用 table.insert(t, 1, 5) 后它会变成 {15, 10, 20, 30} ,另一种特殊但常见的情况是调用 insert 时不指定位置,此时该函数会在序列的最后插入指定的元素,而不会移动任何元素。例如,下属代码从标准输入中按照读入内容并将其保存到一个序列中:

t = {}
for line in io.lines() do table.insert(t, line) end
print(#t)       --> (读取的行数)


table.remove

函数 table.remove删除并返回序列指定位置的元素,然后将其后的元素向前移动填充删除元素后造成的空洞。如果在调用该函数时不指定位置,该函数会删除序列的最后一个元素。


数据结构实现

借助这两个函数,可以很容易地实现Stack )、队列Queue )和双端队列Double Queue )。以栈的实现为例,我们可以使用 t = {} 来表示栈, Push 操作可以使用 table.insert(t, x) 实现, Pop 操作可以使用 table.remove(t) 实现,调用 table.insert(t, 1, x) 可以实现在栈的顶部进行插入,调用 table.remove(t, 1) 可以从栈的顶部移除。由于后两个函数涉及表中其他元素的移动,所以其运行效率并不是特别高。当然,由于 table 标准库中的这些函数是使用 C语言 实现的,所以移动元素所涉及循环的性能开销也并不是太昂贵。因而,对于几百个元素组成的小数组来说这种实现已经足矣。


table.move

Lua5.3 对于移动表中的元素引入了一个更通用的函数 table.move(a, f, e, t) ,调用该函数可以将表 a 从索引 fe 的元素(包含索引 f 和索引 e 对应的元素本身)移动到位置 t 上。例如,如下代码可以在列表 a 的开头插入一个元素:

table.move(a, 1, #a, 2)
a[1] = newElement


如下的代码可以删除第一个元素:

table.move(a, 2, #a, 1)
a[#a] = nil


注意

在计算机领域,移动move )实际上是将一个值从一个地方拷贝copy )到另一个地方。因此,上面的例子中,我们必须在移动后显式地把最后一个元素删除。

函数 table.move 还支持使用一个作为可选参数。当带有可选参数的表作为参数时,该函数将第一个表中的元素移动到第二个表中。例如: table.move(a, 1, #a, 1, {}) 返回列表 a 的一个克隆( clone )(通过将列表 a 中的所有元素拷贝到新列表中), table.move(a, 1, #a, #b + 1, b) 将列表 a 中的所有元素复制到列表 b末尾

目录
相关文章
|
5月前
|
存储 索引 Python
python中的哈希表数据结构
python中的哈希表数据结构
46 0
|
5月前
|
Python
在Python中,哈希表
在Python中,哈希表
35 1
|
5月前
|
C++ 索引 Python
Lua中self 、自索引及其面向对象应用代码示例
Lua中self 、自索引及其面向对象应用代码示例
|
存储 程序员 编译器
4.1 C++ Boost 字符串处理库
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序开发中,如网络应用程序、图像处理、数值计算、多线程应用程序和文件系统处理等。
288 0
|
5月前
|
数据处理 自然语言处理 BI
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
|
12月前
|
存储 算法 索引
Python中的哈希表
哈希表是一种常用的数据结构,广泛应用于字典、散列表等场合。它能够在O(1)时间内进行查找、插入和删除操作,因此被广泛应用于各种算法和软件系统中。哈希表的实现基于哈希函数,将给定的输入映射到一个固定大小的表格中,每个表项存储一个关键字/值对。哈希函数是一个将任意长度的输入映射到固定长度输出的函数,通常将输入映射到从0到N-1的整数范围内。哈希函数要尽量均匀地分布输入,以避免冲突,即多个输入映射...
62 0
|
C++ 容器
STL库之集合基本使用方法
STL库之集合基本使用方法
|
10月前
|
数据处理 Python
Python数据结构包含哪些数据类型?
Python数据结构包含哪些数据类型?
47 3
|
5月前
|
编译器 C++
C++之STL库:string类(用法列举和总结)
C++之STL库:string类(用法列举和总结)
|
C++ 容器
STL 基本操作(包含所有基本的函数功能)
STL 基本操作(包含所有基本的函数功能)
83 0