Lua5.3引入了新的c api lua_rotate:https://www.lua.org/manual/5.3/manual.html#lua_rotate
旋转在有效索引idx和顶部之间的堆栈元素 堆栈。元素在旋转n个位置 顶部,在n方向上为正n或-n位置 底,为负n。 n的绝对值不能大于 比旋转的切片的大小。
无法理解lua_rotate的工作原理,尤其是在粗体字上方,需要帮助!
答案 0 :(得分:3)
堆栈基本上是一个数组,按定义明确的顺序线性排列的元素。假设我们有一个字符数组,如下所示(从1开始的索引位于元素上方):
1 2 3 4 5 6
A Q Z G N K
“旋转”是计算机科学中对元素序列的一种常见操作,非常类似于“移位”或“排序”等(这就是Lua手册不必费心去详细说明其含义的原因。 “旋转”元素)。将此数组向左或向右旋转某个数字N
意味着将所有元素向左/向右移动N
个元素,并将移出数组末尾的元素放入新的空零件,按其顺序排列。
因此,如果将上述数组右旋转2倍,则会得到以下结果:
1 2 3 4 5 6
N K A Q Z G
原始版本中的元素1-4变为元素3-6,而原始版本中的元素5-6变为新版本的1-2。左旋的工作原理类似。
旋转数组的一部分仅意味着执行此操作,而剩下阵列的其他部分。因此,如果采用上面的原始数组,并向左旋转3个元素,但只影响3-6个元素,则会得到以下结果:
1 2 3 4 5 6
A Q K Z G N