GitHub - FaZeRs/learn-cpp

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

  1. Clone the repository
git clone https://github.com/FaZeRs/learn-cpp.git
cd learn-cpp
  1. Create a build directory
  1. Configure and build
cmake -G "Ninja" ..
cmake --build .

๐Ÿ—๏ธ Project Structure

  • src/ - Main source code directory
    • data-structures/ - Implementation of common data structures
    • algorithms/ - Various algorithm implementations
    • patterns/ - Design pattern examples
    • templates/ - Template metaprogramming examples
    • memory/ - 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:

  1. Follow the existing code style
  2. Add appropriate documentation
  3. Update relevant README files

๐Ÿ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.

๐Ÿ”— References