作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试实现一个将对象数组移动到数组右侧的函数。我在互联网上找到的所有内容都是循环类次的实现,但这不是我要找的。如果右边确实有空白,我想将元素向右移动。假设您创建了一个对象 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/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!