LUA table.sort的问题,数组与表的区别

t = {
    [1] = 222,
    [2] = 23,
    [3] = 2433,
    [4] = 135,
}
t1 = {
    222,
    23,
    2433,
    135,
}
t2 = {
    ‘a‘,
    ‘b‘,‘d‘,‘c‘,
}

function cmp(v1, v2)
    return v1.key < v2.key
end

--table.sort(t) --对它排序出错,它是key-value表
for k, v in pairs(t) do--使用pairs对它输出,顺序不定
--使用ipairs对它输出,顺序确定
    print(k, v)
end

--table.sort(t2) --对它排序正确,它是数组,由此可知table.sort只能对数组排序
print(‘-----------------------‘)
for k, v in pairs(t1) do--使用pairs对它输出,顺序确定
    print(k, v)
end

--table.sort(t2) --对它排序正确,它是数组,由此可知table.sort还能对字符串数组排序
print(‘-----------------------‘)
for k, v in pairs(t1) do
    print(k, v)
end
时间: 2024-10-12 08:04:21

LUA table.sort的问题,数组与表的区别的相关文章

树形打印lua table表

local print = print local tconcat = table.concat local tinsert = table.insert local srep = string.rep local type = type local pairs = pairs local tostring = tostring local next = next function print_lua_table (lua_table, indent) if not lua_table or t

Lua table转C++数组

为了方便,这里数组用vector表示. C++层代码如下: static int LuaTable2Vector(lua_State *luaState) { int count = luaL_getn(luaState, 1); std::vector<std::string> vecNameList; for (int i = 0; i < count; i++) { lua_rawgeti(luaState, 1, i+1); const char *strName = lua_t

lua table remove元素的问题

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历.当然你还

Lua table 顺序遍历

在Lua中, 如何遍历一个Table元素,主要有两种类型: 1.pairs:下标从1开始,并且是连续的才可以使用 2.ipairs:是无序的示例 local t = { [10] = 1, [20] = 2, [30] = 3, [40] = 4, [50] = 5, [60] = 6 } for k,v in pairs (t) do print("t1", k, v) end for k,v in ipairs (t) do print("t2", k, v)

Lua非常有用的工具——递归打印表数据

Lua是一种非常小巧的语言.虽小,但五脏俱全. 在Lua中,我认为最最核心的数据结构就是表.表不仅可用作数组,还可以用作字典.Lua面向对象的实现也是用表实现的. 表对于Lua实在是太重要了!所以,在开发与调试过程中,让表可视化是非常迫切的需求.可Lua标准库里没有递归显示表中所有数据的函数. 于是,凭着对Lua的兴趣,我写了一个函数用于递归打印表中所有的数据. 废话不多话,如下为源代码: -----------------------------------------------------

LUA table学习笔记

function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t1,"t1") table.insert(t1,"t2") table.insert(t1,1,"t3") print "1 table.insert-----------" --printT(t1) print "2

Lua Table 操作

Lua中table类似与C#种的字典,其实就是一个key-value键值对数据结构.来学习下table基本操作 Table的创建 myTable = {} --表名后面使用{}赋值,表示一个空的表 myTable = {name="盘子脸",age=18,isMan=true} --创建时候就添加键-值 myTable = {10,20,30,"plateface"} --创建数字下标值的table,默认是从1开始 Table的赋值 myTable[3] = 34

lua table 的操作

table在前面作过介绍,它是一种关联数组,这种关联指的是可以设置各类类型的key来存储值. 1.table 间的数据传递 -- 为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存地址 -- 如果 a 设置为 nil ,则 b 同样能访问 table 的元素. -- 如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存. mytable = {}; print("mytable的类型是:",type(mytable)); mytable

从实现求差集介绍lua table需要注意的一些问题

用lua实现的求两个table的差集(只支持一维table) 1.lua table 判空: table 判空,用的了next()函数. next()函数说明:运行程序来遍历表中的所有域. 第一个参数是要遍历的表,第二个参数是表中的某个键. next 返回该键的下一个键及其关联的值. 如果用 nil 作为 第二个参数调用 next 将返回初始键及其关联值. 当以最后一个键去调用,或是以 nil 调用一张空表时, next 返回 nil. 如果不提供第二个参数,将认为它就是 nil. 可以用 ne