glibc 或任何 C 的标准 Linux 库中是否有动态数组实现?我希望能够添加到列表中而不用担心它的大小。我知道 C++ 存在 std::vector,但我需要 C 等价物。
funkyworklehead
问问题
5154 次
4 回答
10
我猜你正在考虑realloc。但最好将列表包装在结构中以跟踪其当前长度
示例 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);
于 2009-02-22T22:07:47.790 回答
4
glib中有一个动态数组。(虽然不是 glibc)检查 GArray 和 GPtrArray。不过,动态数组与链表并不完全相同。
无论如何,这是我在学习 glib 时能找到的最有用的资源。
于 2009-02-22T22:33:43.390 回答
1
我总是为此使用realloc,您可以将自己的数组函数包装在它周围。AFAIK,没有其他内置的东西。
于 2009-02-22T22:09:30.907 回答
1
你也可以使用obstacks
于 2009-02-23T07:06:24.280 回答