假设我有一个指向某个对象的指针数组。
foo* bar[256];
假设它包含一个列表,其中包含我的缓冲区中的所有 blitted(blitting) 纹理。然后我请求通过删除从数组中取出一些东西,而我要取出的东西不在最后,对吧。所以数组中有一个空的间隙
(filled memory), (empty), (filled memory), (filled memory), etc
虽然我猜在这个例子中它并不重要,但我如何获取数组中空白之前的每个条目并将其按回原位以使空白位于末尾?
对不起, friend 们,措辞不佳!
最佳答案
移动所有项目需要时间。如果项目的顺序无关紧要,我建议只移动最后一个项目来填补空白,并保留一个 size int 来指定占用的大小。
你应该把它放在一个结构中
typedef struct{
int occupied;
foo* bar[256];
}
假设我们要删除第 k 个单元格:
delete(myStruct.bar[k]);
myStruct.bar[k] = myStruct.bar[myStruct.occupied--];
关于c - 删除元素时如何填充数组间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824990/