2009-02-22 13 views

cevap

9

realloc'u düşünürsünüz. Ama onun daha iyi Hep bunun için realloc kullanmak

Örnek API bugünkü uzunluğunun

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. Tam uygulama da. Çok teşekkürler epatel. –

1

takip etmek için bir yapıda bir liste sarmak için, bunu etrafında kendi dizi işlevler sarabilirdiniz. AFAIK, bunun için başka yerleşik şeyler yoktur.

+0

Tekerleği yeniden icat etmekten kaçınmayı umuyordum. ne utanç. Eminim konuştuğunuz sargı her zaman olur. –

+1

Belki bunun için bir kütüphane var, ama çoğu C++ ... – schnaader

+0

:-) için. Ben realloc kullanacağım. Hızlı cevabınız için teşekkür ederim. –

4

Glib'de dinamik bir dizi var. (glibc olmasa da) GArray ve GPtrArray öğelerini kontrol edin. Dinamik bir dizi, aslında bağlantılı bir liste ile aynı şey değildir.

Her zaman glib öğrenirken bulabildiğim en yararlı kaynak this'dur.