假设我有一个指向某个对象的指针数组。
foo* bar[256];假设它包含了我的缓冲区中所有blitted(blitting)纹理的列表。然后,我请求通过删除从数组中删除一些内容,而我要删除的内容不在末尾,对吧。所以在数组中有一个空的空隙
(filled memory), (empty), (filled memory), (filled memory), etc虽然我猜在这个例子中这并不重要,但是我如何获取数组中空格前面的每一项,并按回它,这样空格就在末尾了?
朋友们,很抱歉我的措辞很糟糕!
发布于 2014-11-09 15:28:54
移动所有的项目需要时间。如果项目的顺序不重要,我建议只移动最后一项以填补空白,并保持大小为int以指定占用的大小。
您应该将其保存在结构中。
typedef struct{
int occupied;
foo* bar[256];
}假设我们想删除第k个单元格:
delete(myStruct.bar[k]);
myStruct.bar[k] = myStruct.bar[myStruct.occupied--];发布于 2014-11-09 12:31:18
例如,假设您知道bar[128]是空的。
下面的循环将把bar[128]之后的所有元素向左移动一位,从而在末尾留出空格:
for (int k = 129; k < 128; k++) {
bar[k-1] = bar[k];
}绝对可以将其推广到数组中的多个间隙,但这会变得有点复杂。
发布于 2014-11-09 12:33:31
int i, j;
for (i=0; i<256; i++) {
if (!(bar[i])) {
for (j=i; j<255; j++) {
bar[j] = bar[j+1];
}
}
}https://stackoverflow.com/questions/26824990
复制相似问题