このプロジェクトは、いくつかの一般的なコーディングの問題、実験コード、セットアップスクリプト、アルゴリズム、データ構造、およびC ++で主に開発された設計パターンで構成されています
以前はプライベートでしたが、2つの理由で公開することにしました。
a。人々は、一般的な問題、アルゴリズム、デザインパターンのコードの恩恵を受けることができます
b。私は自分のコードに新鮮で複数の目を持っていることができます。
より良いナビゲーションのために、ディレクトリの内容を以下に説明します。ビルドの指示については、このreadmeの次のセクションを参照してください
このセクション/ディレクトリには、1994年にGang of Fourによって心配された23のデザインパターンのコード例が含まれています
構造、創造、行動の3つの標準サブセクションがあります
各サブセクションディレクトリには、上記の3つのカテゴリに基づいて各デザインパターンのソースファイルが含まれています
このセクションディレクトリ(DSA_ExerCises)には、さまざまなDSA問題ステートメントとそのソリューションがソースコードの形式で含まれています。
各カテゴリの問題ステートメント文書は、それぞれのディレクトリの下に配置されます。同じディレクトリにソリューションを含むソースファイルは、すべての問題の最後に記載されています。
main()関数を使用してソリューションを確認してくださいこのセクションディレクトリのExperimentalCodeには、私が学んだ新しいC ++概念に基づいた純粋に特別なコードが含まれています。 C ++を学習している人や新しいプログラマーである人に利益をもたらした場合に備えて、私はここに残しました
C ++の専門家は、このセクションを安全に無視できます
このディレクトリには、このプロジェクトのほとんどのソースが一般的に必要とするヘッダーまたは共有ライブラリの形の一般的なユーティリティが含まれています。これは、ソースコードの代わりに共有ライブラリでメソッドが定義されている場合、場合によっては重複とバイナリサイズを減らすのに役立ちます。
このディレクトリには、プロジェクト環境をセットアップするために使用される、または概念を評価するために開発されたいくつかのMISCスクリプトとコードが含まれています。
実験コードセクションではなく、ここで終わる理由は、その性質のためです。たとえば、 DL_API_shell.c 、 libdl.so共有ライブラリの動的ローダーAPIを含むソースファイルであり、以下に示すように実験コードの他のソースファイルがCmakeで構築される方法とは異なる方法でコンパイルする必要があります。
gcc -rdynamic -o DL_API_shell DL_API_shell.c -ldl
シェルスクリプトはプロジェクトENVセットアップに適用されない場合がありますが、場合によってはsudoを使用してルートとして実行します
このプロジェクトは、さまざまなセクションのすべてのレベルでCmakeビルドツールを使用して設定されており、構築中により多くのfes性を提供します。
第二に、このプロジェクトには、他の再配置可能なオブジェクトファイルにリンクされた統一されたバイナリ/ライブラリがありません。各ソースファイルはスタンドアロンアプリです
各レベルで、Cmakeはダウンストリームディレクトリのサブディレクトリを追加します。デフォルトでは、トップレベルのCmakeは、すべてのセクションディレクトリに存在するすべてのソースを構築します。たとえば、 DesignPatternsなど、1つのセクションで作業するつもりであれば、これは時間の無駄になる可能性があります
このようなシナリオでは、コメント(cmakeコメントは#から始まります) add_subdirectory()呼び出しが必要ありません。私たちの例では、トップレベルのcmakeは次のようになります。
add_subdirectory(DesignPatterns)
#add_subdirectory(DSA_Exercises)
#add_subdirectory(ExperimentalCode)
これにより、 binの下でDesignPatternsソースコードバイナリのみが生成されます
このルールは、下流のディレクトリに同様の方法で再帰的に適用でき、ビルド時間を節約できます
必要なサブディレクトリがcmakeでセットアップされたら、 Clean Reconfigure All実行し、その後、VSCODEでプロジェクトを開いた場合にソースを構築するためにClean Rebuild Allます。
他の場合には、プロジェクトのルートレベルでコマンドプロンプトで次のコマンドを実行します
mkdir build
cd build
cmake ..
make
関係するソースの出力は、それぞれのセクションディレクトリの下でプロジェクトのbinディレクトリで生成されます
ここのコードは完璧ではないことに注意してください!いくつかのタスクを実装するより良いかつ最適化された方法があるかもしれません。それはまさにこのレポを一般に公開する意図です。
上記のセクションのいずれかで、コードに関する提案と変更を招待しています。
メール([email protected])にメールを送信できます。
あなたが発見した場合、あなたはGitHubで問題を提起することもできます
幸せなコーディングと学習!