2009-05-20 3 views
23

Pourriez-vous recommander une bonne bibliothèque de conteneur de données à usage général pour C (pur C, pas C++)? J'ai juste besoin de structures de base, comme des tableaux dynamiques, des tables de hachage, etc.Besoin d'une bibliothèque à usage général, pure C

(Note: Par "bon" je veux dire interface rapide + élégante).

+1

Je me rends compte que c'est une question (plutôt) dupliquée: Première ligne dans l'outil de recherche SO: http://stackoverflow.com/questions/2540/good-stl-like-library-for-c, et il y a beaucoup plus , juste à la recherche de "[c] glib library" –

+3

Zifre - non, ce n'est pas une solution (pour moi). J'ai programmé C++ pendant presque 20 ans, donc je ne pense pas avoir besoin de conseils sur les librairies C++ disponibles. Ici, j'étais intéressé par ce qui se passe en terre C pure. Et je suis très satisfait des réponses, merci à tous!Surtout que "C interfaces et implémentations" - il ressemble à un bijou. –

+0

à ce stade je me demande juste pourquoi le comité C std n'a jamais fourni de standardisations pour une bibliothèque commune et largement utilisée. Glib est assez utilisé AFAIK? Le comité C++ apporte le STL dans la norme par exemple ... Eh bien, est-ce une bonne question pour SO? : P –

Répondre

14

Je pense que C Interfaces and Implementations de Dave Hanson se qualifie à la fois rapide et élégant. Il comprend de nombreux types de conteneurs, du traitement de chaînes, de l'arithmétique multiprécision, des exceptions, des gestionnaires de mémoire différents. Jolies choses.

Il existe un livre, mais vous n'avez pas besoin de l'acheter pour utiliser le logiciel.

14

Apache Portable Runtime

http://apr.apache.org/

Comprend des modules pour ces zones.

  • Définitions Plate-forme
  • allocation de mémoire interne
  • opérations atomiques
  • Dynamic Object Handling
  • Fonctions pour manipuler l'environnement
  • Codes d'erreur
  • Informations sur le fichier
  • File I/O Fonctions de manipulation
  • Nom du fichier de fonctions de correspondance
  • routines bibliothèque Divers
  • Commande Argument Parsing
  • Routines verrouillage global
  • Hash Tables
  • General Purpose Bibliothèque Routines
  • MMAP (Carte mémoire) Routines
  • Routines réseau
  • Poll Routines
  • mémoire Piscine Fonctions
  • Routines portabilité
  • processus Routines verrouillage
  • Fonctions aléatoires
  • Anneau Implémentations Macro
  • Routines mémoire partagée
  • Traitement des signaux
  • routines String
  • fonctions support APR interne
  • Fonctions de tableau et de tableau
  • Condition Routines variable
  • Fil Mutex Routines
  • Fils et fonctions de processus
  • lecteur/enregistreur de verrouillage Routines
  • Routines temps
  • utilisateur et ID Services Group
15

Glib n'est pas suffisant pour vos besoins?:-) developer.gnome.org/glib

+2

Ce lien est lointain Voici une mise à jour: http://developer.gnome.org/glib/ – Jamer

+0

@Jamer thnx. Je mets à jour le message sans lien. –

5

Vous pouvez également consulter la iMatix SFL, pour citer leur site web:

La SFL (Library Standard Fonction) de iMatix est une bibliothèque fonction portable pour les programmes C/C++ . Le SFL est le résultat de plusieurs années de développement, et est fourni en tant que logiciel Open Source au profit de la communauté Internet . Le SFL est écrit en ANSI C et a été porté sous MS-DOS, Windows, OS/2, Linux et d'autres systèmes UNIX (IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer,> Digital UNIX) et Digital OpenVMS. Il est livré avec des sources complètes et la documentation en HTML.

La SFL fournit environ 450 fonctions qui couvrent les domaines suivants:

  • compression, le chiffrement et le codage;
  • Conversion et formatage de type de données;
  • Dates, heures et calendriers;
  • Accès au répertoire et à l'environnement;
  • Groupes d'utilisateurs et de processus;
  • Index bitmap inversés;
  • Tables de symboles;
  • Fichiers de messages d'erreur;
  • Fichiers de configuration;
  • Manipulation de chaînes et recherche;
  • Accès au fichier;
  • Accès à la prise Internet;
  • Programmation Internet (MIME, CGI);
  • Accès SMTP (e-mail);
  • Programmation par serveur (par lots);
  • Suivi de programme.

Le SFL est un logiciel gratuit que vous pouvez utiliser et distribuer des privées ou commerciales fins selon la SFL License Agreement.

Plus de détails sur l'API elle-même, voir here.

4

Sglib « est une bibliothèque générique C qui a été inspiré par la bibliothèque de modèles standard de C++ »

7

je l'ai déjà recommandé MemSL, mais le site et l'entreprise semblent avoir disparu éteintes. Je suggère maintenant glib, il couvre une grande partie de la même fonctionnalité et est largement pris en charge et utilisé dans toute la communauté Linux.J'ai utilisé MemSL lors de l'implémentation d'un noyau x86, et je l'ai trouvé général, fiable et sans bug.

De la description: C Présentation de la bibliothèque Structures de mémoire (MemSL)

Les structures de mémoire Bibliothèque, MemSL pour faire court, est une bibliothèque de routines utiles permettant l'utilisation efficace des structures de données complexes en C. MemSL contient des routines pour la gestion:

  • multidimensionnels tableaux
  • dynamiquement allouées
  • simples listes chaînées
  • Double listes chaînées
  • Listes circulaires liés
  • Couper, copier et coller des listes liées
  • multiples positionnel Pointeurs listes chaînées
  • Stacks
  • Queues
  • Dequeues
  • Ensembles
  • Sacs
  • Tables
  • Dictionnaires
  • Hash Tables avec séparées Chaînage
  • tables de hachage avec définis par l'utilisateur Paging
  • tables de hachage avec Dynamic Paging
  • arbres binaires de recherche
  • Fileté arbres binaires de recherche
  • AVL équilibré arbres binaires de recherche
  • AVL Arbres de recherche binaire filetés équilibrés
  • Priorité des tas
  • Recherche de priorité entièrement dynamique
Files d'attente
+0

Le lien MemSL ne fonctionne pas (pour le moment, 2012-06-08). Ce lien semble avoir le MemSL de nos jours: http://www.memorystructures.com/. Le lien de téléchargement va à http://sourceforge.net/projects/memsl2/(with dernière mise à jour le 2009-11-12). – FooF

+0

J'ai mis à jour le lien, il devrait fonctionner à nouveau. –

+0

nouveau lien est mort! – easytiger

2

Vous pouvez intéressé à regarder qLibc.

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

Il est une bibliothèque polyvalente complète C/C++, qui comprend tous les types de conteneurs et les routines de la bibliothèque générale.

Questions connexes