2009-05-20 8 views
23

¿Podría recomendar una buena biblioteca de contenedor de datos de propósito general para C (C puro, no C++)? Solo necesito estructuras básicas, como matrices dinámicas, tablas hash, etc.Necesita una biblioteca de propósito general, pura C

(Nota: por "bien" me refiero a la interfaz rápida + elegante).

+1

Me doy cuenta de que es una pregunta (bastante) duplicada: Primera línea en la herramienta de búsqueda SO: http://stackoverflow.com/questions/2540/good-stl-like-library-for-c, y hay bastante más , simplemente buscando "[c] biblioteca glib" –

+3

Zifre - no, no es una solución (para mí). He estado programando C++ durante casi 20 años, así que no creo que necesite ningún consejo sobre librerías C++ disponibles. Aquí estaba interesado en lo que está sucediendo en tierra C pura. Y estoy muy satisfecho con las respuestas, ¡gracias a todos!Especialmente esas "interfaces C e implementaciones": parece una gema. –

+0

en este punto, me pregunto por qué el comisario de C nunca proporcionó una estandarización para una biblioteca común y ampliamente utilizada. Glib es bastante utilizado AFAIK? El comité de C++ trae el STL en el estándar, por ejemplo ... Bueno, ¿es una buena pregunta para SO? : P –

Respuesta

14

Creo que Dave Hanson's C Interfaces and Implementations califica como rápido y elegante. Incluye muchos tipos diferentes de contenedores, algunos procesos de cadenas, aritmética de multiprecision, excepciones, un par de administradores de memoria diferentes. Lindas cosas.

Hay un libro, pero no es necesario comprarlo para usar el software.

14

Apache portátil Tiempo de ejecución

http://apr.apache.org/

incluye módulos para estas áreas.

  • Plataforma Definiciones
  • memoria interna Asignación
  • operaciones atómicas
  • Objeto Manejo dinámico
  • funciones para manipular el medio ambiente
  • Códigos de error
  • Información del archivo
  • File I/O Funciones de manejo
  • Funciones Nombre del Juego
  • rutinas de biblioteca Varios
  • Comando análisis de argumentos
  • Mundial de bloqueo rutinas
  • Hash Tables
  • uso general rutinas de biblioteca
  • MMAP (mapa de memoria) rutinas
  • rutinas de red
  • Rutinas de encuesta
  • memoria de grupo Funciones
  • Portabilidad rutinas
  • Proceso de bloqueo rutinas
  • funciones aleatorias
  • anillo Implementaciones Macro
  • memoria compartida rutinas
  • Manejo de señales
  • rutinas de Cuerda
  • funciones de apoyo
  • APR interna
  • Funciones de tabla y matriz
  • Condición rutinas variable
  • rosca mutex Rutinas
  • Hilos y funciones del proceso
  • lector/grabador de bloqueo Rutinas
  • Tiempo rutinas
  • de usuario y ID de grupo Servicios
15

¿No es Glib suficiente para sus necesidades?:-) developer.gnome.org/glib

+2

Este enlace no está actualizado. Aquí hay una actualización: http://developer.gnome.org/glib/ – Jamer

+0

@Jamer thnx. Actualizo la publicación sin un enlace. –

5

Es posible que también desee comprobar hacia fuera el iMatix SFL, para citar a su página web:

El SFL (Biblioteca de funciones estándar) de iMatix es una biblioteca portátil función para los programas de C/C++ . El SFL es el resultado de muchos años de desarrollo, y se proporciona como software de código abierto para el beneficio de la comunidad de Internet . El SFL está escrito en ANSI C y ha sido portado a MS-DOS, Windows, OS/2, Linux y otros sistemas UNIX (IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer,> Digital UNIX) y Digital OpenVMS. Viene con fuentes completas y documentación de en HTML.

El SFL proporciona alrededor de 450 funciones que cubren estas áreas:

  • de compresión, de cifrado, y la codificación;
  • Conversión y formato de tipo de datos;
  • Fechas, horarios y calendarios;
  • Directorio y acceso al entorno;
  • Grupos de usuarios y procesos;
  • Índices de mapa de bits invertidos;
  • Tablas de símbolos;
  • Archivos de mensajes de error;
  • Archivos de configuración;
  • Manipulación y búsqueda de cadenas;
  • Acceso a archivos;
  • Acceso a internet;
  • Programación de Internet (MIME, CGI);
  • Acceso SMTP (correo electrónico);
  • Programación de servidor (por lotes);
  • Programa de seguimiento.

El SFL es un software gratuito que puede usar y distribuir para fines privados o comerciales, según la SFL License Agreement.

Más detalles sobre la API en sí, vea here.

4

Sglib "es una librería genérica de C que se inspiró en la Biblioteca de plantillas estándar de C++"

7

me recomendó anteriormente MemSL, pero el sitio web y la empresa parece que se han extinguido. Ahora sugeriría glib, cubre gran parte de la misma funcionalidad y es ampliamente compatible y se usa en toda la comunidad Linux.

Usé MemSL cuando implementé un kernel x86, y me pareció general, confiable y sin errores.

partir de la descripción: C Visión general de las estructuras de memoria Library (MemSL)

las estructuras de memoria Library, MemSL para abreviar, es una biblioteca de rutinas útiles que permite el uso eficiente de estructuras de datos complejas en C. La MemSL contiene rutinas para la gestión:

  • Multi-Dimensional Arrays asignada dinámicamente
  • listas enlazadas simples
  • Listas doble vinculados
  • listas enlazadas circulares
  • cortar, copiar y pegar con listas enlazadas
  • múltiple posicional punteros a listas enlazadas
  • Pilas
  • colas
  • Retiros de cola
  • Conjuntos
  • Bolsas
  • Tablas
  • Diccionarios
  • Tablas Hash con independiente de encadenamiento
  • Tablas Hash con definido por el usuario de paginación
  • Tablas Hash con Dinámica de paginación
  • búsqueda binaria árboles
  • roscado búsqueda binaria árboles
  • AVL equilibrado búsqueda binaria árboles
  • AVL Árboles de búsqueda binaria de trazo balanceado
  • Priority Heaps
  • Búsqueda de prioridad completamente dinámica Colas
+0

El enlace MemSL no funciona (en este momento, 2012-06-08). Este enlace parece tener el MemSL hoy en día: http://www.memorystructures.com/. El enlace de descarga va a http://sourceforge.net/projects/memsl2/(con la última actualización 2009-11-12). – FooF

+0

Actualicé el enlace, debería funcionar de nuevo. –

+0

nuevo enlace está muerto! – easytiger

2

Usted puede interesado en el estudio de qLibc.

http://en.wikipedia.org/wiki/Qlibc http://www.qdecoder.org/qlibc/

Es una biblioteca de propósito general completa C/C++, que incluye todo tipo de recipientes y rutinas generales de la biblioteca.

Cuestiones relacionadas