Este proyecto comprende algunos problemas de codificación comunes, código experimental, scripts de configuración, algoritmos y estructuras de datos y patrones de diseño desarrollados predominantemente en C ++
Era privado antes, pero decidí hacerlo público por 2 razones:
a. Las personas pueden beneficiarse del código para problemas comunes, algoritmos y patrones de diseño
b. Puedo tener un conjunto de ojos frescos y múltiples en mi código que me ayudan a mejorar su calidad.
El contenido del directorio se explica a continuación para una mejor navegación. Para obtener instrucciones de compilación, consulte la siguiente sección en este readme
Esta sección/directorio contiene ejemplos de código para 23 patrones de diseño concijos por una pandilla de cuatro en 1994
Hay 3 subsecciones estándar: estructural, creacional y conductual
Cada directorio de subsección contiene un archivo fuente para cada patrón de diseño en las 3 categorías mencionadas anteriormente
Este directorio de sección (DSA_EXercises) contiene varias declaraciones de problemas de DSA y sus soluciones en forma de código fuente.
Un documento de declaraciones de problemas para cada categoría se coloca en su respectivo directorio. El archivo fuente que contiene la solución en el mismo directorio se menciona al final de cada problema.
main() utilizada dentro de la solución para un problema respectivo Este ExperimentalCode de directorio de sección contiene un código puramente exprimental basado en nuevos conceptos de C ++ que aprendí. Lo he dejado aquí en caso de que beneficie a cualquiera que también esté aprendiendo C ++ o sea un nuevo programador
Los expertos en C ++ pueden ignorar de forma segura esta sección
Este directorio contiene utilidades comunes en forma de encabezados o bibliotecas compartidas requeridas comúnmente por la mayoría de las fuentes en este proyecto. Esto puede ayudar a reducir la duplicación y también el tamaño binario en algunos casos si los métodos se definen en una biblioteca compartida en lugar del código fuente.
Este directorio contiene algunos scripts y código MALC utilizados para configurar el entorno de mi proyecto o desarrollado para evaluar un concepto.
La razón por la que termina aquí y no en la sección del Código Experimental es por su naturaleza. Por ejemplo, DL_API_shell.c es un archivo fuente que contiene la API de cargador dinámico de libdl.so biblioteca compartida y debe compilarse de manera diferente a cómo otros archivos fuente en código experimental se crean en cmake como se muestra a continuación:
gcc -rdynamic -o DL_API_shell DL_API_shell.c -ldl
Los scripts de shell pueden no aplicarse a la configuración de envidación de su proyecto, pero en caso de que lo hagan, ejecutarlos como root usando sudo
Este proyecto se ha establecido con la herramienta de compilación CMake en todos los niveles para que diferentes secciones proporcionen más fexibilidad mientras se construyen.
En segundo lugar, este proyecto no tiene un binario/biblioteca unificado vinculado con otros archivos de objetos reubicables, cada archivo fuente es una aplicación independiente
En cada nivel, CMake agrega subdirectorios para los directorios aguas abajo. Por defecto, el nivel superior CMake construirá todas las fuentes que residen en todos los directorios de sección. Esto puede ser una pérdida de tiempo si tiene la intención de trabajar con cualquier sección, por ejemplo, DesignPatterns
En tales escenarios, comente (los comentarios de CMake comienzan con # ) las llamadas add_subdirectory() que no son necesarias. En nuestro ejemplo, el CMake de nivel superior se verá así:
add_subdirectory(DesignPatterns)
#add_subdirectory(DSA_Exercises)
#add_subdirectory(ExperimentalCode)
Esto generará solo los binarios del código fuente DesignPatterns en bin
Esta regla se puede aplicar de manera recursiva para directorios aguas abajo de manera similar para ahorrar tiempo de construcción.
Una vez que los subdirectorios requeridos se configuran en CMake, ejecute Clean Reconfigure All seguido de Clean Rebuild All para construir las fuentes si ha abierto el proyecto en VScode
En otros casos, ejecute los siguientes comandos en el símbolo del sistema a nivel raíz del proyecto
mkdir build
cd build
cmake ..
make
La salida para fuentes involucradas se generará en el directorio bin del proyecto en sus respectivos directorios de sección
¡Tenga en cuenta que el código aquí no es perfecto! Puede haber formas mejores y más optimizadas de implementar algunas tareas y esa es exactamente la intención de exponer este repositorio al público.
Estoy invitando sugerencias y modificaciones en el código en cualquiera de las secciones anteriores.
Puede enviarme un correo electrónico ([email protected]) sus sugerencias/modificaciones o crear una nueva sucursal y plantear una solicitud de extracción contra la rama maestra
También puede plantear problemas en GitHub si descubre alguno
¡Feliz codificación y aprendizaje!