关于 结构体数组 的问题
struct s{..}
s[] S=new s[16];
//..赋值
现在,我想删掉第8个元素,并将其后面元素依次移动过来。
我想到的办法是:
for(int i=7;i<15;++i)
{
S[i]=S[i+1];
}
请问该方法可行否,有没更高效方法?
------解决方案--------------------可以。
如果使用数组似乎已经效率够高了。其他方法本质上应该也是这样移动的。
另外,可以考虑使用 List<s> S = new List<s>();
------解决方案--------------------链表,在插入和删除时比数组快,因为它不用移动元素。。。不过链表没有数组的随机访问快速……
你写的可以,不过最好另外设个变量,记录总元素个数。
比如你这段程序执行前,int size=16;
删除操作执行后size--;,元素个数减1,,不然删除之后S[15]这个最后的元素无法确定是否还有效……
如果想要更高效的办法就用Array.Copy(.NET内部用不安全代码直接复制内存空间),比如你写的这段程序可以用下面这个语句代替
C# code
Array.Copy(S, 8, S, 7, 8);