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
Makefile
within each exercise directory. - Use
UpperCamelCase
for class names.
- Functions:
*printf()
,*alloc()
,free()
- External libraries like
C++11
,Boost
- Using
namespace <ns_name>
andfriend
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<algorithm>
header). Memory leaks
when usingnew
.- Function
implementations in header
files (except for function templates).
- Use
standard library
extensively. Additional files
allowed 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/.h
for class definition, and Source file.cpp
for 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