Domanda

Qualcuno conosce delle librerie del contenitore C? Sto cercando qualcosa che fornisca implementazioni standard di elenchi collegati, array, tabelle hash ecc., Proprio come fa il C ++ STL. Le preoccupazioni principali sono:

  1. Il codice client dovrebbe essere in grado di creare contenitori per più tipi di dati diversi senza modificare la libreria.
  2. L'interfaccia per la creazione e l'utilizzo dei contenitori dovrebbe essere intuitiva.
È stato utile?

Soluzione

Mi sono appena imbattuto in SGLIB mentre cercavo un'implementazione in C di un contenitore di mappe / dizionari. Sfortunatamente, nessuna mappa ma sembra includere i contenitori di cui hai chiesto. Non ho idea di quanto sia bello.

http://sglib.sourceforge.net .

Altri suggerimenti

Chuck Falconer ha una libreria di hash decente scritta in C che include un'interfaccia C ++, fare clic su su hashlib.zip sulla pagina Web da scaricare.

Ben Pfaff ha una libreria di alberi binari ed equilibrata molto bella ed estremamente ben documentata, GNU libavl , che implementa la maggior parte delle strutture ad albero principali tra cui alberi di ricerca binaria, alberi AVL, alberi rosso-neri e versioni thread di ciascuno.

libavl è concesso in licenza sotto LGPL (dalla versione 2.0.3), hashlib è GPL.

Non sono sicuro di ciò che stai cercando per quanto riguarda gli array e gli elenchi collegati poiché il primo è supportato direttamente dalla lingua e il secondo è generalmente abbastanza banale da implementare senza giustificare una libreria.

Sglib è un'eccellente libreria di strutture di dati generici. La libreria attualmente fornisce un'implementazione generica per:

  • matrici di ordinamento
  • elenchi collegati
  • elenchi collegati ordinati
  • liste doppie collegate
  • alberi rosso-neri
  • contenitori con hash

È molto veloce. Più veloce che glib. È ispirato alla libreria dei modelli standard. Scarica qui

Un'altra soluzione è Sotware caos attraente . Libreria di macro C.:
kbtree.h: efficiente libreria B-tree in C.
khash.h: libreria di tabelle hash veloci e leggere in C.
kvec.h: semplice contenitore vettoriale in C.

Kulesh Shanmugasundaram presenta l'elenco generico del kernel Linux e una tabella hash generica basata su Linux Elenco collegato al kernel.

Il sotware Sglib e Attractive Chaos e Linux Kernel Linked List sono librerie di macro C. L'uso di void * per implementare contenitori generici in C potrebbe essere inefficiente. Le macro C imitano i modelli C ++ e sono efficienti come un modello C ++.

Che ne dici di ccl? Questa è una libreria di contenitori per C. Forse è la soluzione migliore per te. Puoi vedere https://code.google.com/p/ccl/ . Divertiti.

Sto usando una libreria che sto crescendo dall'interfaccia e dalle implementazioni di Hanson & C; libro. La sua fonte è scaricabile all'indirizzo

sito web del libro cii

Tutto è un tipo di dati astratto. C'è Elenco, Set, Tabella (mappa).

#include " queue.h " per accedere alle implementazioni di elenchi collegati singolarmente, code di coda collegate singolarmente, elenchi e code di coda.

Ho trovato una cache generica per la memorizzazione di oggetti arbitrari in memoria di DJ Bernstein ( http: // cr. yp.to/djbdns.html ) per essere pulito, semplice e super veloce. Cerca cache.h e cache.c in tarball djdns.

Alcuni di quelli di cui ho sentito parlare (ma che non ho mai usato) sono

  • Glib
  • Libreria funzioni standard iMatix
  • elementi diversi dalle intestazioni del kernel Linux (ad es. elenco)

Questo sembra coprire la maggior parte dei contenitori e alcuni algoritmi. Inoltre non esiste alcuna licenza, tutte le intestazioni contengono: "il codice può essere utilizzato senza restrizioni". http: //www.planet-source-code .com / vb / scripts / ShowCode.asp txtCodeId = 13867 & amp;? lngWId = 3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top