2009-02-22 10 views

Odpowiedz

9

Domyślam się, że myślisz o realloc. Ale lepiej zawinąć listy w strukturze śledzić jego obecnej długości

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

Dang. Pełna implementacja. Wielkie dzięki epatel. –

1

Zawsze używam realloc na to, można owinąć własne funkcje tablicowe wokół niego. AFAIK, nie ma na to innych wbudowanych rzeczy.

+0

Miałem nadzieję uniknąć ponownego wynalezienia koła. jaka szkoda. Jestem pewna, że ​​omijanie, o którym mówisz, dzieje się przez cały czas. –

+1

Być może jest tam jakaś biblioteka, ale większość z nich jest dla C++ ... – schnaader

+0

:-) W porządku. Będę używał realloc. Dziękuję za szybką odpowiedź. –

4

W glib jest tablica dynamiczna. (ale nie glibc) Sprawdź GArray i GPtrArray. Tablica dynamiczna nie jest jednak tak naprawdę jak połączona lista.

W każdym razie this to najbardziej przydatne źródło, jakie udało mi się znaleźć podczas nauki glib.

Powiązane problemy