Quelqu'un connaît-il des bibliothèques de conteneurs C? Je cherche quelque chose qui donne des implémentations standard de listes liées, de tableaux, de tables de hachage, etc., de la même manière que le STL C++. Les principales préoccupations sont les suivantes:
Je suis juste tombé sur SGLIB en cherchant une implémentation C d'un conteneur de carte/dictionnaire. Malheureusement, pas de carte, mais elle semble inclure les conteneurs que vous avez demandés. Je ne sais pas à quel point c'est bon.
Sglib est une excellente bibliothèque générique de structures de données. La bibliothèque fournit actuellement une implémentation générique pour:
C'est très rapide. Plus vite que ça. Il est inspiré de la bibliothèque de modèles standard. Téléchargez ici
Une autre solution est Attractive Chaos sotware . Bibliothèque de macros C:
kbtree.h: bibliothèque d'arborescence B efficace en C.
khash.h: bibliothèque de tables de hachage rapide et légère en C.
kvec.h: simple conteneur vectoriel en C.
Kulesh Shanmugasundaram présente la liste liée générique du noyau Linux et une table de hachage générique basée sur la liste liée du noyau Linux.
Les logiciels Sglib et Attractive Chaos et Linux Kernel Linked List sont des bibliothèques de macros C. En utilisant void*
pour implémenter des conteneurs génériques en C peut être inefficace. Les macros C imitent les modèles C++ et sont aussi efficaces qu'un modèle C++.
Chuck Falconer possède une bibliothèque de hachage décente écrite en C qui comprend une interface C++, cliquez sur hashlib.Zip sur la page Web pour télécharger.
Ben Pfaff possède une bibliothèque d'arbres binaires et équilibrée très agréable et extrêmement bien documentée, GNU libavl , qui implémente la plupart des principales structures d'arbres, y compris les arbres de recherche binaires, les arbres AVL, rouge-noir arbres et versions filetées de chacun.
libavl est sous licence LGPL (à partir de la version 2.0.3), hashlib est GPL.
Je ne suis pas sûr de ce que vous recherchez en ce qui concerne les tableaux et les listes liées, car le premier est pris en charge directement par le langage et le second est généralement assez trivial pour être mis en œuvre sans garantir une bibliothèque.
Et ccl? Il s'agit d'une bibliothèque de conteneurs pour C. Peut-être qu'elle vous convient le mieux. Vous pouvez voir https://code.google.com/p/ccl/ . Profitez-en.
J'utilise une bibliothèque que j'ai développée à partir du livre "C Interface and Implementations" de Hanson. Sa source est téléchargeable sur
Tout est un type de données abstrait. Il y a List, Set, Table (map).
Certains de ceux dont j'ai entendu parler (mais jamais utilisés) sont
Cela semble couvrir la plupart des conteneurs et certains algorithmes. Il n'y a pas non plus de licence, tous les en-têtes contiennent - "le code peut être utilisé sans restriction". http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13867&lngWId=
#include "queue.h"
pour accéder aux implémentations des listes à liaison unique, des files d'attente de queue à liaison unique, des listes et des files d'attente de queue.
J'ai trouvé un cache générique pour stocker des objets arbitraires en mémoire par D. J. Bernstein ( http://cr.yp.to/djbdns.html ) à la fois propre, simple et super rapide. Recherchez cache.h et cache.c dans l'archive djdns.