Skip to content

My own implementation of C++98's vector, stack, map, set, enable_if, and more.

Notifications You must be signed in to change notification settings

pbremondFR/ft_containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ft_containers

What is this ?

ft_containers is a 42 common core project, in which we are asked to re-implement part of the C++98 STL from scratch.

While this project was a pain to work through (compiler template/const errors are a nightmare to read), it taught me a lot about the inner workings of C++ and of the STL.

Indeed, I learnt a lot about red-black trees, SFINAE, iterators, templates, header-only libraries, and more. Knowing how to make your own, custom container in C++, with iterators, is definitely a skill I'm glad to have acquired. Besides, the best way to understand a tool is to re-make it yourself.

Features

I was required to re-implement:

  • vector
  • stack
  • map
  • iterator_traits
  • reverse_iterator
  • enable_if, even though it's C++11
  • is_integral
  • equal and lexicographical_compare
  • pair and make_pair

I also re-implemented:

  • set
  • integral_constant
  • distance
  • advance
  • prev

map and set are implemented as red-black trees, to keep access, insertion, and deletion times compliant with the O(log(n)) requirement of these in the STL.

vector implements an SFINAE optimization, allowing much faster insertion and deletion times for complex types such as std::string, as long as they implement a void swap(const T&) method.

About

My own implementation of C++98's vector, stack, map, set, enable_if, and more.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published