Question

Quelqu'un connaît-il des bibliothèques de conteneurs C? Je cherche quelque chose qui donne des implémentations standard de listes chaînées, tableaux, tables de hachage, etc., à peu près de la même manière que le CST STL. Les principales préoccupations sont les suivantes:

  1. Le code client doit pouvoir créer des conteneurs pour plusieurs types de données différents sans modifier la bibliothèque.
  2. L'interface de création et d'utilisation des conteneurs doit être intuitive.
Était-ce utile?

La solution

Je viens de tomber sur SGLIB alors que je recherchais une implémentation C d’un conteneur de carte / dictionnaire. Malheureusement, aucune carte, mais elle semble inclure les conteneurs sur lesquels vous avez posé des questions. Je ne sais pas à quel point c'est bon.

http://sglib.sourceforge.net .

Autres conseils

Chuck Falconer a une bibliothèque de hachage décente écrite en C qui inclut une interface C ++, cliquez sur sur hashlib.zip sur la page Web à télécharger.

Ben Pfaff possède une très belle et extrêmement bien documentée bibliothèque d'arborescence binaire et équilibrée, GNU libavl , qui implémente la plupart des principales structures arborescentes, notamment des arbres de recherche binaires, des arbres AVL et des arbres rouge-noir. et versions filetées de chaque.

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 chaînées, car le premier est pris en charge directement par le langage et le dernier est en général assez trivial pour être mis en œuvre sans garantir une bibliothèque.

Sglib est une excellente bibliothèque de structures de données génériques. La bibliothèque fournit actuellement une implémentation générique pour:

  • tableaux de tri
  • listes chaînées
  • listes chaînées triées
  • listes double liées
  • arbres rouge-noir
  • conteneurs hachés

C'est très rapide. Plus rapide que simple. Il est inspiré de la bibliothèque de modèles standard. Téléchargez-le ici

Une autre solution est le logiciel de chaos attractif . Bibliothèque de macros C:
kbtree.h: bibliothèque B-tree efficace en C.
khash.h: bibliothèque de tables de hachage rapide et légère en c.

kvec.h: conteneur de vecteur simple en C.

Kulesh Shanmugasundaram présente la liste générique liée au noyau Linux et une table de hachage générique basée sur Linux. Liste liée du noyau.

Les logiciels Sglib et Attractive Chaos et la liste liée du noyau Linux sont des bibliothèques de macros en C. L'utilisation de void * pour implémenter des conteneurs génériques en C peut s'avérer inefficace. Les macros C imitent les modèles C ++ et sont aussi efficaces qu'un modèle C ++.

Que diriez-vous de ccl? Il s’agit d’une bibliothèque de conteneurs pour C. C’est peut-être la meilleure solution pour vous. Vous pouvez consulter https://code.google.com/p/ccl/ . Profitez-en.

J'utilise une bibliothèque issue de "l'interface et implémentations C" de Hanson. livre. Sa source est téléchargeable à

site Web du livre cii

Tout est un type de données abstrait. Il existe une liste, un ensemble, un tableau (carte).

#include "queue.h" pour accéder aux implémentations des listes à lien unique, des files d'attente secondaires, des listes et des files d'attente uniques,

.

DJ Bernstein a trouvé un cache générique pour stocker des objets arbitraires en mémoire ( http: // cr. yp.to/djbdns.html ) soit propre, simple et ultra rapide. Recherchez cache.h et cache.c dans l'archive djdns.

Certains de ceux dont j'ai entendu parler (mais que je n'ai jamais utilisés) sont

  • Glib
  • Bibliothèque de fonctions standard iMatix
  • éléments disparates des en-têtes du noyau Linux (liste, par exemple)

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 & amp; lngWId = 3

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top