Dieses Projekt umfasst einige häufige Codierungsprobleme, experimentelle Code, Setup -Skripte, Algorithmen und Datenstrukturen und Entwurfsmuster, die vorwiegend in C ++ entwickelt wurden
Es war früher privat, aber ich entschied mich aus 2 Gründen, es öffentlich zu machen:
A. Menschen können vom Code für gemeinsame Probleme, Algorithmen und Entwurfsmuster profitieren
B. Ich kann frische und mehrere Augen auf meinen Code haben, um seine Qualität zu verbessern
Der Verzeichnisgehalt wird nachstehend für eine bessere Navigation erläutert. Informationen zur Erstellung finden Sie im nächsten Abschnitt in diesem Readme
Dieses Abschnitt/Verzeichnis enthält Codebeispiele für 23 Entwurfsmuster, die 1994 von einer vierköpfigen Bande verantwortlich sind
Es gibt 3 Standarduntersuchungen: strukturelle, kreationale und verhaltensbezogene Unterabschnitte
Jedes Unterabschnittsverzeichnis enthält eine Quelldatei für jedes Entwurfsmuster in den oben genannten 3 oben genannten Kategorien
Dieses Abschnittsverzeichnis (DSA_Exercises) enthält verschiedene DSA -Problemanweisungen und ihre Lösungen in Form des Quellcode.
Ein Problemanweisungsdokument für jede Kategorie wird in das jeweilige Verzeichnis gestellt. Die Quelldatei, die die Lösung im selben Verzeichnis enthält, wird am Ende jedes Problems erwähnt.
main() -Funktion, die in der Lösung für das jeweilige Problem verwendet wird Dieser Abschnittsverzeichnis ExperimentalCode enthält einen rein exprimalen Code, der auf neuen C ++ - Konzepten basiert, die ich gelernt habe. Ich habe es hier hier gelassen, nur für den Fall, dass es jedem zugute kommt, der auch C ++ lernt oder ein neuer Programmierer ist
Experten in C ++ können diesen Abschnitt sicher ignorieren
Dieses Verzeichnis enthält gemeinsame Versorgungsunternehmen in Form von Headern oder gemeinsamen Bibliotheken, die häufig von den meisten Quellen in diesem Projekt erforderlich sind. Dies kann in einigen Fällen dazu beitragen, die Duplikation und auch die binäre Größe zu verringern, wenn Methoden in einer gemeinsamen Bibliothek anstelle des Quellcodes definiert werden.
Dieses Verzeichnis enthält einige Misc -Skripte und Code, mit denen meine Projektumgebung eingerichtet oder zur Bewertung eines Konzepts entwickelt wurde.
Der Grund, warum es hier endet und nicht im Abschnitt Versuchscode, liegt in seiner Natur. Beispielsweise ist DL_API_shell.c eine Quelldatei, die die dynamische Loader -API von libdl.so freigegebener Bibliothek enthält und unterschiedlich kompiliert werden muss als andere Quelldateien im experimentellen Code in CMake wie unten gezeigt:
gcc -rdynamic -o DL_API_shell DL_API_shell.c -ldl
Die Shell -Skripte gilt möglicherweise nicht für Ihr Projekt -Env -Setup, führen Sie sie jedoch mit sudo als Root aus
Dieses Projekt wurde mit dem CMake Build -Tool auf jeder Ebene eingerichtet, damit verschiedene Abschnitte mehr Fexibilität beim Aufbau bieten.
Zweitens hat dieses Projekt keine einheitliche Binär-/Bibliothek, die mit anderen verlierbaren Objektdateien verknüpft ist, wobei jede Quelldatei eine eigenständige App ist
Auf jeder Ebene fügt CMake Unterverzeichnisse für die nachgeschalteten Verzeichnisse hinzu. Standardmäßig erstellt der CMake auf der obersten Ebene alle Quellen, die in allen Abschnittsverzeichnissen leben. Dies kann eine Zeitverschwendung sein, wenn Sie beabsichtigen, mit einem Abschnitt zu arbeiten, beispielsweise DesignPatterns
In solchen Szenarien (CMake -Kommentare beginnen mit # ) Die Aufrufe add_subdirectory() , die nicht erforderlich sind. In unserem Beispiel sieht der Cmake auf der obersten Ebene ungefähr so aus:
add_subdirectory(DesignPatterns)
#add_subdirectory(DSA_Exercises)
#add_subdirectory(ExperimentalCode)
Dies generiert nur die DesignPatterns -Quellcode -Binärdateien unter bin
Diese Regel kann auf ähnliche Weise für nachgeschaltete Verzeichnisse rekursiv angewendet werden, um die Erstellung Zeit zu sparen
Sobald die erforderlichen Unterverzeichnisse in CMake eingerichtet sind, führen Sie Clean Reconfigure All durch, gefolgt von Clean Rebuild All alle, um die Quellen zu erstellen, wenn Sie das Projekt in VSCODE geöffnet haben
Führen Sie in anderen Fällen die folgenden Befehle auf der Eingabeaufforderung auf der Stammebene des Projekts aus
mkdir build
cd build
cmake ..
make
Die Ausgabe für beteiligte Quellen wird im bin -Verzeichnis des Projekts gemäß ihren jeweiligen Abschnittsverzeichnissen generiert
Bitte beachten Sie, dass der Code hier nicht perfekt ist! Es könnte bessere und optimiertere Möglichkeiten zur Umsetzung einiger Aufgaben geben, und genau das ist die Absicht, dieses Repo der Öffentlichkeit auszusetzen.
Ich lade Vorschläge und Änderungen des Code in einem der oben genannten Abschnitte ein.
Sie können entweder eine E -Mail ([email protected]) Ihre Vorschläge/Modifikationen oder eine neue Filiale erstellen und eine Pull -Anfrage gegen die Master -Filiale stellen
Sie können auch Probleme auf Github aufwerfen, wenn Sie welche entdecken
Happy Coding und Lernen!