My solution for ft_containers of the common-core of 42 school.
The goal of this project was to recode the STL-containers of c++98.
The mandatory containers where std::vector
, std::stack
and std::map
.
They had to have the exact same structure as the original containers and support every function the standard-containers supported.
Almost all of the needed information can be found at cplusplus.com or directly from the source code of the different libraries.
In the end of the project you had to make sure the containers worked as intended and had a good performance.
For that I created a Makefile that compiles my main.cpp with make all
into two different binaries:
- once with the
std::
namespace - once with the
ft::
namespace
After that you can run them individually to see the output.
Or run my test.sh
, which does not need the make all
before, since it runs make re
anyways to make sure everything is in perfect working order.
This testing is also included in the github-actions of this project and are running automated on each push or pull request on the main branch.
The .yml
for the github actions can be found here.
My testing script will run the two binaries one after another, put their output into .log files and diff them in two different ways.
This diff shows differences in red and similarities in green.
This diff shows the ft::containers
output on the left and the std::containers
output on the right.
This project teached the very inner workings of the c++ STL-containers, which made working with them in later projects like webserv a lot easier.
It also shows that my red_black_tree is far from perfect, which made my ft::map be a lot slower than the std::map, which can be seen in the output of my main.cpp.