c - 删除元素时如何填充数组间隙?

标签 c arrays

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

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/

相关文章:

php - 带有数组变量的 MYSQL 语句

c - 从 C 文本文件中读取值流

c - 在c中标记字符串数组

c++ - 使用 malloc : why did it happen? 的内存分配导致堆损坏

C语言中从pow/powl到Long Long的类型转换值(value)

我可以在单独的函数中安装信号处理程序吗

c# - 列表、数组和 IEnumerable 协方差

c - flexpath 添加不起作用

c - 如何在 MPLAB Harmony 框架中的两个应用程序(状态机)之间交换数据?

javascript - 提醒用户 Extendscript 中数组之外的项目