Existe-t-il une implémentation dynamic array dans la bibliothèque glibc ou dans l'une des bibliothèques Linux standard pour C? Je veux être en mesure d'ajouter à une liste sans se soucier de sa taille. Je sais que std :: vector existe pour C++, mais j'ai besoin de l'équivalent C.Existe-t-il une implémentation de tableau/matrice dynamique à redimensionnement automatique pour C fournie avec glibc?
Répondre
Je suppose que vous pensez à realloc. Mais son mieux pour envelopper une liste dans une structure de garder une trace de sa longueur actuelle
Exemple 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);
J'utilise toujours realloc pour cela, vous pouvez envelopper vos propres fonctions de tableau autour. AFAIK, il n'y a pas d'autres choses intégrées pour cela.
J'espérais éviter de réinventer la roue. C'est dommage. Je suis sûr que l'emballage dont vous parlez se passe tout le temps. –
Peut-être qu'il existe une bibliothèque pour cela, mais la plupart d'entre eux sont pour le C++ ... – schnaader
:-) Très bien. Je vais utiliser Realloc. Merci pour la réponse rapide. –
Il existe un tableau dynamique dans glib. (pas glibc si) Découvrez GArray et GPtrArray. Un tableau dynamique n'est cependant pas vraiment la même chose qu'une liste chaînée.
De toute façon this est la ressource la plus utile que j'ai pu trouver en apprenant la glib.
Vous pouvez également utiliser obstacks
Dang. Mise en œuvre complète aussi. Merci beaucoup à epatel. –