Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pin3dev/42_cpp_modules_05-09
Exploring advanced C++ and OOP concepts like SOLID, casting operators, templates (value, functions, and classes), exception handling using throw() and try/catch blocks, and so on
https://github.com/pin3dev/42_cpp_modules_05-09
42 42-cpp-modules 42born2code 42cursus 42porto 42projects 42school cpp-98 cpp-course cpp-modules cpp-modules-1337 cpp-modules-42 doxygen doxygen-documentation oop-in-cpp oop-principles tutorial
Last synced: about 2 months ago
JSON representation
Exploring advanced C++ and OOP concepts like SOLID, casting operators, templates (value, functions, and classes), exception handling using throw() and try/catch blocks, and so on
- Host: GitHub
- URL: https://github.com/pin3dev/42_cpp_modules_05-09
- Owner: pin3dev
- Created: 2024-03-18T19:24:36.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-08-28T13:16:00.000Z (4 months ago)
- Last Synced: 2024-08-29T14:02:49.682Z (4 months ago)
- Topics: 42, 42-cpp-modules, 42born2code, 42cursus, 42porto, 42projects, 42school, cpp-98, cpp-course, cpp-modules, cpp-modules-1337, cpp-modules-42, doxygen, doxygen-documentation, oop-in-cpp, oop-principles, tutorial
- Language: C++
- Homepage:
- Size: 2.51 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CPP-Modules_05-09 `100/100`
## Table of Contents
- [Project Overview](#overview)
- [Modules Guidelines](#guidelines)
- [Mandatory Features](#features)
- [Execution](#execution)
- [To Study](#Links2Study)## Overview
The `cpp_modules_05-09` projects revolves around mastering advanced C++ concepts such as:
- Exceptions (throw, try/catch)
- Literals values
- Regular Expressions Concept (Regex)
- Casting Operators (static_cast, dynamic_cast, const_cast, reinterpret_cast)
- Templates Functions
- Templates Classes
- Templates Values
- Standard Template Library (STL)
- Containers (stack, list, vector, map, deque...)
- Iterators
- Composition vs Inheritance
- Reverse Polish Notation & Polish Notation
- Merge-Insertion Sort Algorithm (The Ford-Johnson Sorting Algorithm)
## Guidelines### Compilation:
- Compile your code using `c++` with flags `-Wall` `-Wextra` `-Werror` `-std=c++98`
- Exercise directories: `ex00`, `ex01`, ..., `exn`
- Separate `Makefile` within each exercise directory.
- Use `UpperCamelCase` for class names.### Forbidden:
- Functions: `*printf()`, `*alloc()`, `free()`
- External libraries like `C++11`, `Boost`
- Using `namespace ` and `friend` keywords.
- Until you reach the Module 08: `STL`, meaning no Containers (`vector` `list` `map` and so forth) and no Algorithms (anything that requires to include the `` header).
- `Memory leaks` when using `new`.
- Function `implementations in header` files (except for function templates).### Allowed:
- Use `standard library` extensively.
- `Additional files` allowed if necessary.### Rule:
Follow the `Orthodox Canonical Form` for classes `Modules 02-09`, which must implement four essential member functions:
- Default constructor
- Copy constructor
- Copy assignment operator
- Destructor
- Split class code into two files: Header file `.hpp/.h` for class definition, and Source file `.cpp` for implementation## Features
### [Module 05](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP05): Exception Handling, Custom Exceptions, Error Propagation
### [Module 06](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP06): Casting Operators, Type Conversion, Literals Values
### [Module 07](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP07): Template Functions, Templates Classes, Iterators
### [Module 08](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP08): STL, Containers, Algorithmic Efficiency
### [Module 09](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP09): RPN, Merge-Insertion Sort Algorithm, Advanced STL, Performance Optimization## Execution
Each exercise's compilation is done separately by running the Makefile within the exercise's folder.
```bash
#in the ex00, ex01, ex02 or ex03 directory
make```
## Links2Study
| Grade |Modules|Lang | Type| Links and Subjects |
|:---------:|-------|:---:|:---:|--------------------|
|ββ|`CPP05` `CPP09` | π§π· | π |[SOLID Conceitos](https://www.macoratti.net/11/05/pa_solid.htm)|
|ββ|`CPP05` `CPP09`| π§π· | π |[SOLID](https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design-pt)|
|ββ|`CPP05` `CPP09` | π§π· | π |[O que Γ© SOLID](https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530)|
|ββ|`CPP05` `CPP09` | π§π· | π |[OOP - HeranΓ§a x Composição](https://www.macoratti.net/11/05/oop_cph1.htm)|
|β |`CPP05` `CPP09` | πΊπΈ | π |[Composition vs Inheritance](https://www.digitalocean.com/community/tutorials/composition-vs-inheritance)|
|π€©|`CPP05` `CPP09` | πΊπΈ | π |[Composition in OOPS](https://www.educba.com/composition-in-oops/)|
|π€©|`CPP06` | πΊπΈ | π |[Casting Operators in C++](https://www.geeksforgeeks.org/casting-operators-in-cpp/)|
|ββ|`CPP06` | π§π· | π |[TIPOS DE LITERAIS EM C / C++](https://acervolima.com/tipos-de-literais-em-c-c-com-exemplos/)|
|π€©|`CPP06` | πΊπΈ | π |[Literals In C++](https://www.geeksforgeeks.org/cpp-literals/)|
|π€©|`CPP06` `CPP09` | πΊπΈ | π |[Regex](https://www3.ntu.edu.sg/home/ehchua/programming/howto/Regexe.html)|
|π€©|`CPP08` `CPP09` | πΊπΈ | πΉ |[C++ Standard Template Library STL](https://www.youtube.com/watch?v=BKBXM7ypQG0&list=PL1w8k37X_6L9NXrP1D31hDTKcdAPIL0cG&index=1)
|β|`CPP09` | πΊπΈ | π |[Polish Notation](https://en.wikipedia.org/wiki/Polish_notation)|
|β|`CPP09` | πΊπΈ | π |[Reverse Polish Notation](https://en.wikipedia.org/wiki/Reverse_Polish_notation)|
|π€©|`CPP09` | πΊπΈ | πΉ |[Reverse Polish Notation](https://www.youtube.com/watch?v=qN8LPIcY6K4)|
|β |`CPP09` | πΊπΈ | πΉ |[Reverse Polish Notation Using Stacks](https://www.youtube.com/watch?v=QxHRM0EQHiQ)|
|π€©|`CPP09` | πΊπΈ | πΉ |[Introduction to Reverse Polish Notation (RPN)](https://www.youtube.com/watch?v=HDwRlIc75w4)|
|π€©|`CPP09` | πΊπΈ | πΉ |[Binary Search animated](https://www.youtube.com/watch?v=DRsJ8sA9xzc)|
|ββ|`CPP09` | πΊπΈ | π |[On the Average Case of MergeInsertion](https://arxiv.org/pdf/1905.09656.pdf)|
|ββ|`CPP09` | πΊπΈ | π |[Python: Sort unsorted numbers using Merge-insertion sort](https://www.w3resource.com/python-exercises/data-structures-and-algorithms/python-search-and-sorting-exercise-39.php)|
|ββ|`CPP09` | πΊπΈ | π |[Ford-Johnson merge-insertion sort](https://codereview.stackexchange.com/questions/116367/ford-johnson-merge-insertion-sort)|
|ββ|`CPP09` | πΊπΈ | π |[Merge Sort vs. Insertion Sort](https://www.geeksforgeeks.org/merge-sort-vs-insertion-sort/)|> β OK | β Good | ββ VeryGood | π€© Amazing | π Bookmarked2Read
> π Blog | π Chat | πΉ Video | π Book_&_ScientificPapers