首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当一个元素被移除时,如何填充数组间隙?

当一个元素被移除时,如何填充数组间隙?
EN

Stack Overflow用户
提问于 2014-11-09 12:25:45
回答 4查看 1K关注 0票数 0

假设我有一个指向某个对象的指针数组。

代码语言:javascript
运行
复制
foo* bar[256];

假设它包含了我的缓冲区中所有blitted(blitting)纹理的列表。然后,我请求通过删除从数组中删除一些内容,而我要删除的内容不在末尾,对吧。所以在数组中有一个空的空隙

代码语言:javascript
运行
复制
(filled memory), (empty), (filled memory), (filled memory), etc

虽然我猜在这个例子中这并不重要,但是我如何获取数组中空格前面的每一项,并按回它,这样空格就在末尾了?

朋友们,很抱歉我的措辞很糟糕!

EN

回答 4

Stack Overflow用户

发布于 2014-11-09 15:28:54

移动所有的项目需要时间。如果项目的顺序不重要,我建议只移动最后一项以填补空白,并保持大小为int以指定占用的大小。

您应该将其保存在结构中。

代码语言:javascript
运行
复制
typedef struct{
 int occupied;
 foo* bar[256];
}

假设我们想删除第k个单元格:

代码语言:javascript
运行
复制
delete(myStruct.bar[k]);
myStruct.bar[k] = myStruct.bar[myStruct.occupied--];
票数 2
EN

Stack Overflow用户

发布于 2014-11-09 12:31:18

例如,假设您知道bar[128]是空的。

下面的循环将把bar[128]之后的所有元素向左移动一位,从而在末尾留出空格:

代码语言:javascript
运行
复制
for (int k = 129; k < 128; k++) {
   bar[k-1] = bar[k];
}

绝对可以将其推广到数组中的多个间隙,但这会变得有点复杂。

票数 1
EN

Stack Overflow用户

发布于 2014-11-09 12:33:31

代码语言:javascript
运行
复制
int i, j;
for (i=0; i<256; i++) {
    if (!(bar[i])) {
        for (j=i; j<255; j++) {
            bar[j] = bar[j+1];
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26824990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档