2009-02-22 7 views

Antwort

9

Ich denke, Sie denken an realloc. Aber es ist besser zu wickeln eine Liste in einer Struktur, den Überblick über seine aktuelle Länge API

Beispiel

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); 
+0

Dang verwenden. Volle Implementierung auch. Vielen Dank Epatel. –

1

ich immer realloc für diesen Einsatz zu halten, könnten Sie Ihre eigenen Array-Funktionen um ihn herum wickeln. AFAIK, dafür gibt es keine anderen eingebauten Dinge.

+0

Ich hatte gehofft zu vermeiden, das Rad neu zu erfinden. Schade. Ich bin mir sicher, dass das Wrapping, über das du redest, die ganze Zeit passiert. –

+1

Vielleicht gibt es eine Bibliothek dafür, aber die meisten sind für C++ ... – schnaader

+0

:-) Alles klar. Ich werde Realloc verwenden. Danke für die schnelle Antwort. –

4

Es gibt ein dynamisches Array in glib. (nicht Glibc obwohl) Überprüfen Sie GArray und GPtrArray. Ein dynamisches Array ist jedoch nicht wirklich dasselbe wie eine verknüpfte Liste.

Anyways this ist die nützlichste Ressource, die ich beim Lernen von glib finden konnte.