C++ Learning Project
A comprehensive C++ project showcasing implementations of common data structures, algorithms, design patterns, and modern C++ features. This project serves as both a learning resource and a reference implementation.
๐ฏ Project Overview
This project includes implementations and examples of:
- Data Structures (Binary Trees, Hash Maps, Linked Lists, etc.)
- Algorithms (Sorting, Searching)
- Design Patterns (Creational, Structural, Behavioral)
- Modern C++ Features (Templates, RAII)
- Memory Management Concepts
๐ Getting Started
Prerequisites
- CMake 3.27 or higher
- Modern C++ Compiler (GCC-14, LLVM-20)
- Ninja or Visual Studio 2022 (for Windows)
Building the Project
- Clone the repository
git clone https://github.com/FaZeRs/learn-cpp.git
cd learn-cpp- Create a build directory
- Configure and build
cmake -G "Ninja" .. cmake --build .
๐๏ธ Project Structure
src/- Main source code directorydata-structures/- Implementation of common data structuresalgorithms/- Various algorithm implementationspatterns/- Design pattern examplestemplates/- Template metaprogramming examplesmemory/- Memory management concepts
๐ ๏ธ Development Environment
This project includes a complete development environment setup using:
- DevContainer configuration for VS Code
- Pre-configured development tools and extensions
- Automated CI/CD pipelines
- Code quality tools (clang-tidy, cppcheck)
VS Code Extensions
The project comes with recommended extensions for C++ development:
- C/C++ tools
- CMake tools
- Doxygen documentation generator
- Git integration
- Code formatting and analysis tools
๐งช Quality Assurance
The project employs several tools to maintain code quality:
- Static Analysis (clang-tidy, cppcheck)
- CodeQL Analysis
- Automated CI/CD pipelines
- Comprehensive build matrix testing
๐ Learning Resources
Each implementation includes detailed documentation explaining:
- Theoretical concepts
- Time and space complexity
- Common use cases
- Code examples
- References for further reading
๐ค Contributing
Contributions are welcome! Please feel free to submit pull requests. Make sure to:
- Follow the existing code style
- Add appropriate documentation
- Update relevant README files
๐ License
This project is licensed under the MIT License. See the LICENSE file for details.