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 自动调整大小以适应其中的内容?

UITextView自动调整大小以调整单行iOS Objective -C

使用具有自动调整大小的默认整数数组在java中实现堆栈

C# TransparentProxies 和数组大小调整

UIView 子视图不是为 iPad 自动旋转或自动调整大小