¿Hay una implementación dynamic array en glibc o en cualquiera de las bibliotecas estándar de Linux para C? Quiero poder agregar a una lista sin preocuparme por su tamaño. Sé que std :: vector existe para C++, pero necesito el equivalente en C.¿Existe una implementación de arreglo de red/ajuste de tamaño automático para C que viene con glibc?
¿Existe una implementación de arreglo de red/ajuste de tamaño automático para C que viene con glibc?
Respuesta
Supongo que estás pensando en realloc. Pero es mejor para envolver una listaen una estructura para realizar un seguimiento de su longitud actual
API de ejemplo
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);
siempre uso realloc de esto, se podía envolver sus propias funciones de matriz alrededor de ella. AFAIK, no hay otras cosas incorporadas para esto.
tenía la esperanza de evitar volver a inventar la rueda. qué lástima. Estoy seguro de que la envoltura de la que hablas ocurre todo el tiempo. –
Quizás haya alguna biblioteca para él, pero la mayoría de ellos son para C++ ... – schnaader
:-) De acuerdo. Usaré realloc. Gracias por la rápida respuesta. –
Hay una matriz dinámica en glib. (aunque no es glibc) Eche un vistazo a GArray y GPtrArray. Sin embargo, una matriz dinámica no es en realidad lo mismo que una lista vinculada.
Anyways this es el recurso más útil que he podido encontrar al aprender glib.
También puede usar obstacks
- 1. C++ prohíbe el arreglo de tamaño variable
- 2. C# llamando a la función C que devuelve struct con arreglo de caracteres de tamaño fijo
- 3. ¿Existe una implementación estándar de una lista circular para C++?
- 4. ¿De dónde viene el `tamaño`?
- 5. ¿La implementación de glibc de fprintf() es segura para subprocesos?
- 6. Existe una buena implementación de radixsort para flotadores en C#
- 7. ¿Cómo crear una lista de tamaño de arreglo en python?
- 8. Arreglo de Judy para lenguajes gestionados
- 9. tamaño de arreglo (bloqueo) de std :: vector
- 10. Arreglo de bits en C++
- 11. Columnas de tamaño automático para TListView
- 12. ListView columna de tamaño automático
- 13. Arreglo de arreglo de archivos
- 14. FlowLayoutPanel autowrapping no funciona con tamaño automático
- 15. ¿Existe una implementación .NET de HtmlPurifier (php)
- 16. Linux-x64 glibc: ¿Por qué el 1 de febrero viene antes del 31 de enero?
- 17. ¿Existe una implementación eficiente de tetration?
- 18. Tamaño automático de los controles en winform
- 19. ¿Existe una implementación de handlebars.js en Java?
- 20. ¿Cuándo debería usar expresiones lambda que viene con C# 3.0?
- 21. ¿Existe una implementación de RFC 3229 (codificación Delta para HTTP)?
- 22. Tamaño automático de la fuente de ajuste para caber
- 23. ¿Existe un paquete recomendado para el aprendizaje automático en Python?
- 24. ¿Existe una biblioteca de correo electrónico con fluidez para C#?
- 25. ¿Cómo arreglo una llamada de función "ambigua"?
- 26. Implementación de Hashtable para C
- 27. ¿Existe un marco de implementación continua?
- 28. Etiqueta HTML5 frente a Div para cambio de tamaño automático
- 29. Arreglo de JavaScript para URLencoded
- 30. ¿Cómo puedo aislar los problemas con ssh-add/ssh-agent en la implementación de msys que viene con msysgit?
Dang. Implementación completa también. Muchas gracias epatel. –