Glibc'de veya C için standart Linux kütüphanelerinden herhangi birinde dynamic array uygulaması var mı? Boyutu hakkında endişe duymadan bir listeye ekleyebilmek istiyorum. Biliyorum std :: vektör C++ için var, ama C eşdeğerine ihtiyacım var.Glibc ile birlikte gelen C için otomatik yeniden boyutlandırma dizisi/dinamik dizi uygulaması var mı?
cevap
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);
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.
Tekerleği yeniden icat etmekten kaçınmayı umuyordum. ne utanç. Eminim konuştuğunuz sargı her zaman olur. –
Belki bunun için bir kütüphane var, ama çoğu C++ ... – schnaader
:-) için. Ben realloc kullanacağım. Hızlı cevabınız için teşekkür ederim. –
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.
Ayrıca, obstacks
Dang. Tam uygulama da. Çok teşekkürler epatel. –