glibc 附带的 C 是不是有自动调整大小的数组/动态数组实现?
Posted
技术标签:
【中文标题】glibc 附带的 C 是不是有自动调整大小的数组/动态数组实现?【英文标题】:Is there an auto-resizing array/dynamic array implementation for C that comes with glibc?glibc 附带的 C 是否有自动调整大小的数组/动态数组实现? 【发布时间】:2010-10-09 05:19:29 【问题描述】:glibc 或任何 C 标准 Linux 库中是否有 dynamic array 实现?我希望能够添加到列表中而不用担心它的大小。我知道 C++ 存在 std::vector,但我需要 C 等价物。
【问题讨论】:
【参考方案1】:我猜你在想realloc。但最好将 list 包装在结构中以跟踪其当前长度
示例 API
struct s_dynamic_array
int allocated; /* keep track of allocated size */
int usedLength; /* keep track of usage */
int *array; /* dynamicaly grown with realloc */
;
typedef struct s_dynamic_array s_dynamic_array;
s_dynamic_array *new_dynamic_array(int initalSize);
void free_dynamic_array(s_dynamic_array *array);
int size_of_dynamic_array(s_dynamic_array *array);
s_dynamic_array *add_int_to_dynamic_array(s_dynamic_array *array, int value);
int int_at_index(s_dynamic_array *array, int index);
【讨论】:
当。也全面实施。非常感谢 epatel。【参考方案2】:glib 中有一个动态数组。 (虽然不是 glibc)检查 GArray 和 GPtrArray。不过,动态数组与链表并不是一回事。
无论如何,this 是我在学习 glib 时能找到的最有用的资源。
【讨论】:
【参考方案3】:我总是为此使用realloc,您可以将自己的数组函数包装在它周围。 AFAIK,没有其他内置的东西。
【讨论】:
我希望避免重新发明***。多可惜。我敢肯定你所说的包装一直在发生。 :-) 好的。我将使用 realloc。感谢您的快速回复。 没问题,这就是 SO 的用途 :)【参考方案4】:你也可以使用obstacks
【讨论】:
以上是关于glibc 附带的 C 是不是有自动调整大小的数组/动态数组实现?的主要内容,如果未能解决你的问题,请参考以下文章
在自动调整大小的标签中的不同行上显示 Swift 字符串数组
Flex 4:是不是可以让 BorderContainer 自动调整大小以适应其中的内容?