Esiste un'implementazione dynamic array in glibc o una qualsiasi delle librerie Linux standard per C? Voglio essere in grado di aggiungere a una lista senza preoccuparmi delle sue dimensioni. So che std :: vector esiste per C++, ma ho bisogno dell'equivalente C.Esiste un array di ridimensionamento automatico/implementazione di array dinamici per C che viene fornito con glibc?
risposta
Immagino che stiate pensando a realloc. Ma è meglio avvolgere un lista in una struttura per tenere traccia della sua lunghezza attuale
Esempio 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);
Io uso sempre realloc per questo, si potrebbe avvolgere le proprie funzioni di matrice intorno ad esso. AFAIK, non ci sono altre cose built-in per questo.
speravo di evitare di reinventare la ruota. che peccato. Sono sicuro che il wrappering di cui parli succeda sempre. –
Forse c'è qualche libreria per questo, ma la maggior parte di loro sono per C++ ... – schnaader
:-) Va bene. Userò realloc. Grazie per la risposta rapida. –
C'è una matrice dinamica in glib. (non glibc però) Controlla GArray e GPtrArray. Tuttavia, un array dinamico non è esattamente la stessa cosa di un elenco collegato.
In ogni caso this è la risorsa più utile che sia stata in grado di trovare durante l'apprendimento di glib.
È inoltre possibile utilizzare obstacks
- 1. Inizializzazione di array dinamici C
- 2. Ridimensionamento di un array
- 3. creazione di array dinamici di stringhe C++
- 4. Webpack con un array fornito come configurazione
- 5. Compilazione di array dinamici VBA
- 6. Fortran: array dinamici e array automatico Evitare allocazione di memoria
- 7. Interfaccia C++ HDF5: scrittura di array 2D dinamici
- 8. array di array in C#
- 9. Dichiarazione di array dinamici in java
- 10. Mappa un array di array
- 11. C: Espansione di un array con malloc
- 12. Esiste un metodo inverso per `Array # include?`?
- 13. C# che confronta due array di stringhe
- 14. C#: modifica dei valori per ogni elemento di un array
- 15. Assegnazione di un array ad un altro array C++
- 16. Definizione di array dinamici bidimensionali con tipi diversi
- 17. Esiste un rimpiazzo per gli array con enumerazione come indici?
- 18. Convertire un array di byte a una classe che contiene un array di byte in C#
- 19. Matrici statiche VS. array dinamici in C++ 11
- 20. (OpenGL 3.1 - 4.2) Array dinamici uniformi?
- 21. C# Permutazione di un array di arraylists?
- 22. Come dichiarare un array di oggetti dinamici in Java?
- 23. immagine di ridimensionamento che viene posizionata nell'array di byte [] matrice
- 24. Esiste un modo più rapido per confrontare i dati tra gli array dinamici in VBA?
- 25. Inizializzazione di un array con un constexpr?
- 26. C# che passa attraverso un array
- 27. Problemi di C++ con array di oggetti
- 28. Che tipo di array Python sarebbe? Esiste già in Python?
- 29. array_intersect, ma per un sub-array di un singolo array variabile
- 30. Dividere un array in 2 array C#
Dang. Anche la piena implementazione. Grazie mille epatel. –