在数组中移动整个块

时间:2018-05-19 08:08:48

标签: c arrays move

我想知道是否有可能在阵列中移动整个块。我打算删除动态长度数组中的一个项目,在删除它之后,我希望整个块向右移动。到目前为止,我按元素执行此元素,但这不是有效的。所以我想知道是否有更好的解决方案。

重要提示:元素的顺序需要保持不变。

3 个答案:

答案 0 :(得分:5)

使用memmove可能比按元素复制更有效率,因为你可以利用你正在进行大量移动而不是大量小动作的事实(并且编译器经常提供高度优化memmove实现),但这就是它。您需要在内存中移动所有内容,因此您将不得不移动它。

如果您对阵列执行此操作很多,则可能意味着您需要不同的数据结构。

答案 1 :(得分:0)

您可以使用链接列表而不是数组。在链表中删除很容易。你只需要指出下一个下一个元素。

答案 2 :(得分:0)

使用环形缓冲区,如下所示:

<input type="number" id="txtWard" onkeypress="return numberOnly(event)" required="required" runat="server" min="0" max="8" />