lua_rotate是做什么的?

时间:2018-09-09 05:20:47

标签: lua lua-c++-connection

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的工作原理,尤其是在粗体字上方,需要帮助!

1 个答案:

答案 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