gpt4 book ai didi

c++ - 如何在 C++ 中将数组右移?

转载 作者:太空狗 更新时间:2023-10-29 19:38:01 27 4
gpt4 key购买 nike

我正在尝试实现一个将对象数组移动到数组右侧的函数。我在互联网上找到的所有内容都是循环类次的实现,但这不是我要找的。如果右边确实有空白,我想将元素向右移动。假设您创建了一个对象 Packet 数组,其大小为 10

Packet* a[] = { p4 , p3 , p2 , p1, null, null, null, null, null, null }

平移函数只会将所有内容向右移动

{ null ,p4 , p3 , p2 , p1, null, null, null, null, null }

在数组末尾有一个元素的情况下

{ p10, p9, p8, p7 ,p6 ,p5 ,p4 , p3 , p2 , p1}

函数不会改变任何东西。

 { p4 , p3 , p2 , p1, null, null, null, null, null, null }

我的实现思路是将数组复制到临时数组中,删除原始数组上的所有内容,然后复制到其中但从位置 [1] 而不是位置 [0] 开始。但这似乎不是很有效。

还有其他想法吗?

最佳答案

假设数组有n个元素:

if(a[n-1]==null){
memmove(a+1, a, (n-1)*sizeof(Packet*));
a[0]=null;
}

另一种方法是不移动数组的元素,而是移动用于访问它的索引。基本上,您要做的是加 1 模 n。

关于c++ - 如何在 C++ 中将数组右移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com