tipos - Clase de contenedor/Biblioteca para C
tipos de contenedores terrestres (8)
¿Qué hay de ccl? Esta es una biblioteca de contenedores para C. Quizás sea la más adecuada para usted. Puede ver code.google.com/p/ccl . Disfrútala.
¿Alguien sabe de alguna biblioteca de contenedor C? Estoy buscando algo que proporcione implementaciones estándar de listas vinculadas, matrices, tablas hash, etc., de forma muy parecida a como lo hace C ++ STL. Las preocupaciones clave son:
- El código del cliente debe poder crear contenedores para múltiples tipos de datos diferentes sin modificar la biblioteca.
- La interfaz para crear y usar los contenedores debe ser intuitiva.
Algunos de los que he oído hablar (pero nunca los usé) son
- Fácil
- Biblioteca de funciones estándar de iMatix
- elementos dispares de los encabezados del kernel de Linux (por ejemplo, lista)
Esto parece cubrir la mayoría de los contenedores y algunos algoritmos. Tampoco hay licencia, todos los encabezados contienen: ''el código puede usarse sin restricciones''. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=3
He estado usando una biblioteca que he estado desarrollando a partir del libro "C Interface and Implementations" de Hanson. Su fuente se puede descargar en
Todo es un tipo de datos abstracto. Hay Lista, Conjunto, Tabla (mapa).
Chuck Falconer tiene una biblioteca hash decente escrita en C que incluye una interfaz C ++, haga clic en hashlib.zip en la página web para descargar.
Ben Pfaff tiene una biblioteca de árbol binaria y equilibrada muy buena y extremadamente bien documentada, GNU libavl , que implementa la mayoría de las estructuras de árbol principales, incluidos árboles de búsqueda binarios, árboles AVL, árboles rojo-negros y versiones enhebradas de cada uno.
libavl está licenciado bajo LGPL (a partir de la versión 2.0.3), hashlib es GPL.
No estoy seguro de lo que está buscando en cuanto a arreglos y listas enlazadas, ya que el primero es compatible directamente con el idioma y este último generalmente es lo suficientemente trivial para implementarlo sin justificar una biblioteca.
es una excelente biblioteca genérica de estructuras de datos. La biblioteca proporciona actualmente una implementación genérica para:
- ordenar matrices
- listas vinculadas
- listas clasificadas ordenadas
- listas dobles
- árboles rojo-negro
- contenedores hash
Es muy rápido. Más rápido que eso. Está inspirado en la Biblioteca de plantillas estándar. Descarga aquí
Otra solución es el software atractivo de Chaos . Biblioteca de macro C:
kbtree.h: biblioteca eficiente de B-tree en C.
khash.h: biblioteca de tablas hash rápidas y livianas en C.
kvec.h: recipiente simple de vectores en C.
Kulesh Shanmugasundaram presenta la lista genérica de Kernel Linked List y una tabla hash genérica basada en la lista de Kernel Linked Linked.
Sglib y Attractive Chaos sotware y Linux Kernel Linked List son bibliotecas de macros de C. Usar void*
para implementar contenedores genéricos en C puede ser ineficiente. Las macros C imitan las plantillas C ++ y son tan eficientes como una plantilla C ++.
#include "queue.h"
para obtener acceso a las implementaciones de listas de #include "queue.h"
, colas de cola enlazadas individualmente, listas y colas de espera.
Encontré un caché genérico para almacenar objetos arbitrarios en la memoria de DJ Bernstein ( http://cr.yp.to/djbdns.html ) para que sea tanto simple como superrápido. Busque cache.h y cache.c en djdns tarball.