ToLua中list的 bug

来源:互联网 发布:手机号归属地 数据库 编辑:程序博客网 时间:2024/05/20 19:31

并且它的插入很奇怪,他把插入的节点放在Iter 后面,所以我又改了一下这个函数,如下:

function list:xk_insert(v, iter)assert(v)if not iter thenreturn self:push(v)endlocal t = {value = v}  if iter._prev then    t._prev=iter._prev;iter._prev = t;t._next = iter;    t._prev._next=t;elseself.first = t    t._next = iter;    iter._prev=t;endself.length = self.length + 1end



总感觉这种链表有些 尾大不掉,于是乎对 数组Table 重新写了一个List,如下

local list = {}list.__index =list;function list:new()  return setmetatable({}, self)endfunction list:clear()    self=nil;    self={};endfunction list:length()    return #self;endfunction list:push_back(v)  self[#self+1]=v;endfunction list:pop_back()  local result=self[#self];self[#self]=nil;return result;endfunction list:erase(value)for i=#self,1,-1 do       if(self[i]==value) then          for j=i,#self-1 do              self[j]=self[j+1];          end          self[#self]=nil;      end  endendfunction list:sort(fun)    table.sort(list,fun);end--[[local bbb=list:new();bbb:push_back(20)bbb:push_back(1);bbb:push_back(2);bbb:push_back(3);bbb:push_back(20)bbb:push_back(21);bbb:push_back(22);bbb:push_back(20)bbb:push_back(20)for i,value in ipairs(bbb) do print(i..": "..value) endbbb:erase(20);for i,value in ipairs(bbb) do print(i..": "..value) end]]--return list;


原创粉丝点击