{"id":18337771,"url":"https://github.com/pin3dev/42_cpp_modules_05-09","last_synced_at":"2025-07-06T17:04:58.915Z","repository":{"id":242112290,"uuid":"774005584","full_name":"pin3dev/42_CPP_Modules_05-09","owner":"pin3dev","description":"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","archived":false,"fork":false,"pushed_at":"2024-08-28T13:16:00.000Z","size":2632,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:18:40.669Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pin3dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-18T19:24:36.000Z","updated_at":"2024-08-28T13:16:06.000Z","dependencies_parsed_at":"2024-05-31T18:36:38.355Z","dependency_job_id":"c73c2810-6d28-4acd-abd2-564e92f3b12a","html_url":"https://github.com/pin3dev/42_CPP_Modules_05-09","commit_stats":null,"previous_names":["pin3dev/42_cpp_modules_05-09"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pin3dev/42_CPP_Modules_05-09","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_05-09","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_05-09/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_05-09/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_05-09/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pin3dev","download_url":"https://codeload.github.com/pin3dev/42_CPP_Modules_05-09/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_CPP_Modules_05-09/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263940263,"owners_count":23533009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-11-05T20:12:13.518Z","updated_at":"2025-07-06T17:04:58.878Z","avatar_url":"https://github.com/pin3dev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CPP-Modules_05-09 `100/100`\n\n## Table of Contents\n- [Project Overview](#overview)\n- [Modules Guidelines](#guidelines)\n- [Mandatory Features](#features)\n- [Execution](#execution)\n- [To Study](#Links2Study)\n\n## Overview\nThe `cpp_modules_05-09` projects revolves around mastering advanced C++ concepts such as:\n- Exceptions (throw, try/catch)\n- Literals values\n- Regular Expressions Concept (Regex)\n- Casting Operators (static_cast, dynamic_cast, const_cast, reinterpret_cast)\n- Templates Functions \n- Templates Classes \n- Templates Values\n- Standard Template Library (STL)\n- Containers (stack, list, vector, map, deque...)\n- Iterators  \n- Composition vs Inheritance\n- Reverse Polish Notation \u0026 Polish Notation\n- Merge-Insertion Sort Algorithm (The Ford-Johnson Sorting Algorithm)\n  \n## Guidelines\n\n### Compilation:\n\n- Compile your code using `c++` with flags `-Wall` `-Wextra` `-Werror` `-std=c++98`\n- Exercise directories: `ex00`, `ex01`, ..., `exn`\n- Separate `Makefile` within each exercise directory.\n- Use `UpperCamelCase` for class names.\n\n### Forbidden:\n\n- Functions: `*printf()`, `*alloc()`, `free()`\n- External libraries like `C++11`, `Boost`\n- Using `namespace \u003cns_name\u003e` and `friend` keywords.\n- 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 `\u003calgorithm\u003e` header).\n- `Memory leaks` when using `new`.\n- Function `implementations in header` files (except for function templates).\n\n### Allowed:\n\n- Use `standard library` extensively.\n- `Additional files` allowed if necessary.\n\n### Rule:\nFollow the `Orthodox Canonical Form` for classes `Modules 02-09`, which must implement four essential member functions:\n- Default constructor\n- Copy constructor\n- Copy assignment operator\n- Destructor\n- Split class code into two files: Header file `.hpp/.h` for class definition, and Source file `.cpp` for implementation\n\n## Features\n\n### [Module 05](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP05): Exception Handling, Custom Exceptions, Error Propagation\n### [Module 06](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP06): Casting Operators, Type Conversion, Literals Values\n### [Module 07](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP07): Template Functions, Templates Classes, Iterators\n### [Module 08](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP08): STL, Containers, Algorithmic Efficiency\n### [Module 09](https://github.com/pin3dev/42_CPP_Modules_05-09/tree/main/CPP09): RPN, Merge-Insertion Sort Algorithm, Advanced STL, Performance Optimization\n\n## Execution\nEach exercise's compilation is done separately by running the Makefile within the exercise's folder.  \n```bash\n#in the ex00, ex01, ex02 or ex03 directory\nmake\n\n``` \n\n## Links2Study\n| Grade |Modules|Lang | Type| Links and Subjects |\n|:---------:|-------|:---:|:---:|--------------------|\n|⭐⭐|`CPP05` `CPP09` | 🇧🇷 | 📄 |[SOLID Conceitos](https://www.macoratti.net/11/05/pa_solid.htm)|  \n|⭐⭐|`CPP05` `CPP09`| 🇧🇷 | 📄 |[SOLID](https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design-pt)|  \n|⭐⭐|`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)|  \n|⭐⭐|`CPP05` `CPP09` | 🇧🇷 | 📄 |[OOP - Herança x Composição](https://www.macoratti.net/11/05/oop_cph1.htm)|  \n|✅|`CPP05` `CPP09` | 🇺🇸 | 📄 |[Composition vs Inheritance](https://www.digitalocean.com/community/tutorials/composition-vs-inheritance)|  \n|🤩|`CPP05` `CPP09` | 🇺🇸 | 📄 |[Composition in OOPS](https://www.educba.com/composition-in-oops/)|  \n|🤩|`CPP06`         | 🇺🇸 | 📄 |[Casting Operators in C++](https://www.geeksforgeeks.org/casting-operators-in-cpp/)|  \n|⭐⭐|`CPP06`       | 🇧🇷 | 📄 |[TIPOS DE LITERAIS EM C / C++](https://acervolima.com/tipos-de-literais-em-c-c-com-exemplos/)|  \n|🤩|`CPP06`         | 🇺🇸 | 📄 |[Literals In C++](https://www.geeksforgeeks.org/cpp-literals/)|  \n|🤩|`CPP06` `CPP09` | 🇺🇸 | 📄 |[Regex](https://www3.ntu.edu.sg/home/ehchua/programming/howto/Regexe.html)|  \n|🤩|`CPP08` `CPP09` | 🇺🇸 | 📹 |[C++ Standard Template Library  STL](https://www.youtube.com/watch?v=BKBXM7ypQG0\u0026list=PL1w8k37X_6L9NXrP1D31hDTKcdAPIL0cG\u0026index=1)  \n|⭐|`CPP09`         | 🇺🇸 | 📄 |[Polish Notation](https://en.wikipedia.org/wiki/Polish_notation)|  \n|⭐|`CPP09`         | 🇺🇸 | 📄 |[Reverse Polish Notation](https://en.wikipedia.org/wiki/Reverse_Polish_notation)|  \n|🤩|`CPP09`         | 🇺🇸 | 📹 |[Reverse Polish Notation](https://www.youtube.com/watch?v=qN8LPIcY6K4)|  \n|✅|`CPP09`         | 🇺🇸 | 📹 |[Reverse Polish Notation Using Stacks](https://www.youtube.com/watch?v=QxHRM0EQHiQ)|  \n|🤩|`CPP09`         | 🇺🇸 | 📹 |[Introduction to Reverse Polish Notation (RPN)](https://www.youtube.com/watch?v=HDwRlIc75w4)|  \n|🤩|`CPP09`         | 🇺🇸 | 📹 |[Binary Search animated](https://www.youtube.com/watch?v=DRsJ8sA9xzc)|  \n|⭐⭐|`CPP09`       | 🇺🇸 | 📚 |[On the Average Case of MergeInsertion](https://arxiv.org/pdf/1905.09656.pdf)|  \n|⭐⭐|`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)|  \n|⭐⭐|`CPP09`       | 🇺🇸 | 📄 |[Ford-Johnson merge-insertion sort](https://codereview.stackexchange.com/questions/116367/ford-johnson-merge-insertion-sort)|  \n|⭐⭐|`CPP09`       | 🇺🇸 | 📄 |[Merge Sort vs. Insertion Sort](https://www.geeksforgeeks.org/merge-sort-vs-insertion-sort/)|  \n\n\n\n\u003e ✅ OK | ⭐ Good | ⭐⭐ VeryGood | 🤩 Amazing | 🔖 Bookmarked2Read  \n\u003e 📄 Blog | 💭 Chat | 📹 Video | 📚 Book_\u0026_ScientificPapers\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_cpp_modules_05-09","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpin3dev%2F42_cpp_modules_05-09","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_cpp_modules_05-09/lists"}