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)
- Compile your code using
c++with flags-Wall-Wextra-Werror-std=c++98 - Exercise directories:
ex00,ex01, ...,exn - Separate
Makefilewithin each exercise directory. - Use
UpperCamelCasefor class names.
- Functions:
*printf(),*alloc(),free() - External libraries like
C++11,Boost - Using
namespace <ns_name>andfriendkeywords. - Until you reach the Module 08:
STL, meaning no Containers (vectorlistmapand so forth) and no Algorithms (anything that requires to include the<algorithm>header). Memory leakswhen usingnew.- Function
implementations in headerfiles (except for function templates).
- Use
standard libraryextensively. Additional filesallowed if necessary.
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/.hfor class definition, and Source file.cppfor implementation
Module 05: Exception Handling, Custom Exceptions, Error Propagation
Module 06: Casting Operators, Type Conversion, Literals Values
Module 07: Template Functions, Templates Classes, Iterators
Module 08: STL, Containers, Algorithmic Efficiency
Module 09: RPN, Merge-Insertion Sort Algorithm, Advanced STL, Performance Optimization
Each exercise's compilation is done separately by running the Makefile within the exercise's folder.
#in the ex00, ex01, ex02 or ex03 directory
make
| Grade | Modules | Lang | Type | Links and Subjects |
|---|---|---|---|---|
| ⭐⭐ | CPP05 CPP09 |
🇧🇷 | 📄 | SOLID Conceitos |
| ⭐⭐ | CPP05 CPP09 |
🇧🇷 | 📄 | SOLID |
| ⭐⭐ | CPP05 CPP09 |
🇧🇷 | 📄 | O que é SOLID |
| ⭐⭐ | CPP05 CPP09 |
🇧🇷 | 📄 | OOP - Herança x Composição |
| ✅ | CPP05 CPP09 |
🇺🇸 | 📄 | Composition vs Inheritance |
| 🤩 | CPP05 CPP09 |
🇺🇸 | 📄 | Composition in OOPS |
| 🤩 | CPP06 |
🇺🇸 | 📄 | Casting Operators in C++ |
| ⭐⭐ | CPP06 |
🇧🇷 | 📄 | TIPOS DE LITERAIS EM C / C++ |
| 🤩 | CPP06 |
🇺🇸 | 📄 | Literals In C++ |
| 🤩 | CPP06 CPP09 |
🇺🇸 | 📄 | Regex |
| 🤩 | CPP08 CPP09 |
🇺🇸 | 📹 | C++ Standard Template Library STL |
| ⭐ | CPP09 |
🇺🇸 | 📄 | Polish Notation |
| ⭐ | CPP09 |
🇺🇸 | 📄 | Reverse Polish Notation |
| 🤩 | CPP09 |
🇺🇸 | 📹 | Reverse Polish Notation |
| ✅ | CPP09 |
🇺🇸 | 📹 | Reverse Polish Notation Using Stacks |
| 🤩 | CPP09 |
🇺🇸 | 📹 | Introduction to Reverse Polish Notation (RPN) |
| 🤩 | CPP09 |
🇺🇸 | 📹 | Binary Search animated |
| ⭐⭐ | CPP09 |
🇺🇸 | 📚 | On the Average Case of MergeInsertion |
| ⭐⭐ | CPP09 |
🇺🇸 | 📄 | Python: Sort unsorted numbers using Merge-insertion sort |
| ⭐⭐ | CPP09 |
🇺🇸 | 📄 | Ford-Johnson merge-insertion sort |
| ⭐⭐ | CPP09 |
🇺🇸 | 📄 | Merge Sort vs. Insertion Sort |
✅ OK | ⭐ Good | ⭐⭐ VeryGood | 🤩 Amazing | 🔖 Bookmarked2Read
📄 Blog | 💭 Chat | 📹 Video | 📚 Book_&_ScientificPapers