关于 结构体数组 的问题

大狗狗 2008-12-26 09:21:53
struct s{..}

s[] S=new s[16];

//..赋值

现在,我想删掉第8个元素,并将其后面元素依次移动过来。

我想到的办法是:

for(int i=7;i<15;++i)
{
S[i]=S[i+1];
}

请问该方法可行否,有没更高效方法?
...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大狗狗 2008-12-27
  • 打赏
  • 举报
回复
感谢两位回贴,在VC中,使用MoveMemory能够避免使用循环,我想这是最高效的方法。当然C#中没有MoveMemory,但不知有没有类似手段?
tsorgy 2008-12-26
  • 打赏
  • 举报
回复
链表,在插入和删除时比数组快,因为它不用移动元素。。。不过链表没有数组的随机访问快速……

你写的可以,不过最好另外设个变量,记录总元素个数。
比如你这段程序执行前,int size=16;
删除操作执行后size--;,元素个数减1,,不然删除之后S[15]这个最后的元素无法确定是否还有效……


如果想要更高效的办法就用Array.Copy(.NET内部用不安全代码直接复制内存空间),比如你写的这段程序可以用下面这个语句代替
Array.Copy(S, 8, S, 7, 8);

wuyi8808 2008-12-26
  • 打赏
  • 举报
回复
可以。
如果使用数组似乎已经效率够高了。其他方法本质上应该也是这样移动的。

另外,可以考虑使用 List<s> S = new List<s>();

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧