Structures de données construites sur mesure pour certaines des structures de données les plus utilisées en C ++
Le but de ce dépôt est de démontrer comment les conteneurs et les structures de données fonctionnent sous le capot. La plupart des API correspondent à l'API standard trouvée dans les bibliothèques STL et Boost. En fait, il existe peu d'améliorations et d'ajouts précieux à ce que les bibliothèques standard offrent.
Les structures de données suivantes sont mises en œuvre au moment de la rédaction de cette lecture:
Sauf String et Trie qui sont spécifiques au type, toutes les autres structures de données sont implémentées génériquement en tant que modèles, ce qui les rend utilisables sur différents données.
Remarque: les spécialisations peuvent devoir être définies pour les types non primitifs en utilisant des méthodes spéciales dans un type de structure de données applicable
Pour la bibliothèque prête à l'usage, consultez les communiqués
La plupart des structures de données utilisent des modèles, éliminant ainsi la nécessité d'un fichier source distinct. Par exemple, Vector peut être utilisé uniquement comme en-tête. La bibliothèque générée ne sera requise que pour les types avec implémentation non générique et un fichier source distinct. À partir de la rédaction de ce lecture, vous avez besoin de votre application pour créer un lien avec libCustomDataStructures.so Donc, seulement si vous utilisez les structures de données String and Trie .
Pour construire le projet, utilisez le script de construction dans l'arborescence source avec -a option comme suit:
./build.sh -a
Nettoyez la sortie générée et construisez des artefacts avec l'option -c
./build.sh -c
Pour connaître les détails d'utilisation pour d'autres options telles que le type de build et la configuration du générateur, utilisez l'option -h avec le script
./build.sh -h
L'application de panier sert de référence d'utilisation des structures de données personnalisées implémentées ici.
Si l'écriture de code pour les structures de données et les algorithmes en C ++ et DogFooding vous fait cocher comme moi, je suis sûr que vous apprécierez de contribuer à ce projet. Si vous connaissez quelqu'un qui pourrait être intéressé par un tel travail, faites-le le savoir. Je cherche à chercher des améliorations et des ajouts passionnants et un examen critique de la mise en œuvre existante.
En tant que contributeur potentiel, vous êtes les bienvenus
Je suis accessible à [email protected] pour n'importe quoi