Ce projet comprend certains problèmes de codage communs, du code expérimental, des scripts de configuration, des algorithmes et des structures de données et des modèles de conception développés principalement dans C ++
C'était privé plus tôt mais j'ai décidé de le rendre public pour 2 raisons:
un. Les gens peuvent bénéficier du code pour des problèmes communs, des algorithmes et des modèles de conception
né Je peux avoir des yeux frais et multiples sur mon code m'aidant à améliorer sa qualité
Le contenu du répertoire est expliqué ci-dessous pour une meilleure navigation. Pour les instructions de construction, reportez-vous à la section suivante de ce réadme
Cette section / répertoire contient des exemples de code pour 23 modèles de conception concints par Gang of Four en 1994
Il y a 3 sous-sections standard: structurel, créationnel et comportemental
Chaque répertoire de sous-section contient un fichier source pour chaque modèle de conception dans les 3 catégories mentionnées ci-dessus
Ce répertoire de section (DSA_EXERCIS) contient diverses instructions de problème DSA et leurs solutions sous forme de code source.
Un document d'instructions de problèmes pour chaque catégorie est placé sous leur répertoire respectif. Le fichier source contenant la solution dans le même répertoire est mentionné à la fin de chaque problème.
main() utilisée à l'intérieur de la solution pour un problème respectif Ce répertoire de section ExperimentalCode contient un code purement exprimental basé sur de nouveaux concepts C ++ que j'ai appris. Je l'ai laissé ici au cas où il profiterait à quiconque apprend également C ++ ou est un nouveau programmeur
Les experts en C ++ peuvent ignorer cette section en toute sécurité
Ce répertoire contient des services publics communs sous forme d'en-têtes ou de bibliothèques partagées requises par la plupart des sources de ce projet. Cela peut aider à réduire la duplication et également la taille binaire dans certains cas si les méthodes sont définies dans une bibliothèque partagée au lieu du code source.
Ce répertoire contient certains scripts et code MISC utilisés pour configurer mon environnement de projet ou développé pour évaluer un concept.
La raison pour laquelle il se termine ici et non dans la section du code expérimental est due à sa nature. Par exemple, DL_API_shell.c est un fichier source contenant l'API de chargeur dynamique de la bibliothèque partagée libdl.so et doit être compilé différemment de la façon dont d'autres fichiers source dans le code expérimental sont construits dans CMake comme indiqué ci-dessous:
gcc -rdynamic -o DL_API_shell DL_API_shell.c -ldl
Les scripts shell ne s'appliquent peut-être pas à la configuration de votre projet Env, mais dans le cas où ils le feront, exécutez-les comme racine en utilisant sudo
Ce projet a été mis en place avec l'outil CMake Build à tous les niveaux pour différentes sections afin de fournir plus de fexibilité pendant la construction.
Deuxièmement, ce projet n'a pas de binaire / bibliothèque unifié lié à d'autres fichiers d'objets relocables, chaque fichier source étant une application autonome
À chaque niveau, Cmake ajoute des sous-répertoires pour les répertoires en aval. Par défaut, le CMake de niveau supérieur créera toutes les sources résidant dans tous les répertoires de section. Cela peut être une perte de temps si vous avez l'intention de travailler avec une seule section, par exemple DesignPatterns
Dans de tels scénarios, commentez (les commentaires CMake commencent par # ) les appels add_subdirectory() qui ne sont pas requis. Dans notre exemple, le Cmake de niveau supérieur ressemblera à ceci:
add_subdirectory(DesignPatterns)
#add_subdirectory(DSA_Exercises)
#add_subdirectory(ExperimentalCode)
Cela ne générera que les binaires de code source DesignPatterns sous bin
Cette règle peut être appliquée récursivement pour les répertoires en aval de manière similaire pour gagner du temps de construction
Une fois que les sous-répertoires requis sont configurés dans CMake, exécutez Clean Reconfigure All suivis d' Clean Rebuild All pour construire les sources si vous avez ouvert le projet dans VSCODE
Dans d'autres cas, exécutez les commandes suivantes sur l'invite de commande au niveau racine du projet
mkdir build
cd build
cmake ..
make
La sortie des sources impliquées sera générée dans le répertoire bin du projet dans le cadre de leurs répertoires de section respectifs
Veuillez noter que le code ici n'est pas parfait! Il pourrait y avoir des moyens mieux et plus optimisés de mettre en œuvre certaines tâches et c'est exactement l'intention d'exposer ce référentiel au public.
J'invite les suggestions et les modifications sur le code dans l'une des sections ci-dessus.
Vous pouvez soit envoyer un courriel ([email protected]), vos suggestions / modifications ou créez une nouvelle branche et soulevez une demande de traction contre la branche principale
Vous pouvez également soulever des problèmes sur GitHub si vous en découvrez
Bonne codage et apprentissage!