15

glibc または C 用の標準 Linux ライブラリに動的配列の実装はありますか? サイズを気にせずにリストに追加できるようにしたい。C++ 用の std::vector が存在することは知っていますが、同等の C が必要です。

4

4 に答える 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

There is a dynamic array in glib. (not glibc though) Check out GArray and GPtrArray. A dynamic array is not really the same thing as a linked list though.

Anyways this is the most useful resource I've been able to find when learning glib.

于 2009-02-22T22:33:43.390 に答える
1

オブスタックも使えます

于 2009-02-23T07:06:24.280 に答える
1

これには常にreallocを使用します。独自の配列関数をラップすることができます。私の知る限り、これには他に組み込みのものはありません。

于 2009-02-22T22:09:30.907 に答える