C++ ft_containers

Proyecto de C++ que consiste en programar desde cero las estructuras de datos de la Standard Template Library.

Descripción

Este es un proyecto de C++ de la escuela 42 Madrid. El objetivo es entender como funciona el lenguaje en profundidad, para conseguir este objetivo, los alumnos tenemos que crear nuestras propias clases y funciones que repliquen exactamente el comportamiento de las estructuras de datos que tiene C++ como el array, la lista el map.

Esto incluye desarrollar un Binary Tree ordenado, programar la gestión de memoria a bajo nivel, crear todas las funciones para trabajar con datos con sus sobrecargas y pasar una serie de test que comprueben tanto la velocidad como la precisión de tu código.

Mi aportación

Este fue un proyecto individual, por tanto realizé el programa y su arquitectura. Contiene los contenedores de datos Map, Vector, Stack y Map. Tiene sus iteradores y sus iteradores reversos, todas sus funciones y sobrecargas.

Programación

Este proyecto fue realizado durante 2 meses, dedicando aproximadamente 7 horas al día, 6 días a la semana, por tanto llevó alrededor de 340 horas. La parte más desafiante fue conseguir superar todos los tests, ya que necesitas fortalecer mucho tu código para poder superar correctamente todo tipo de inputs, incluso algunos casos extremos que tienen como objetivo romper el código.

Aún así, fue un gran reto y fue muy satisfactorio conseguir escribir código sobre una feature tan central a c++ y a tan bajo nivel, además de crear tu propio Binary Tree funcional con todas sus finciones de búsqueda, eleminiación y remplazo. Este es uno de los conceptos más populares dentro del mundo de la programación, y poder escribirlo con código de buena calidad es muy satisfactorio.

Ejemplo de código

En esta foto se ve una función del programa. En ella se muestra cómo funciona la parte de detectar el próximo número mayor en un Binary Tree. Primero se comprueba si hay un nodo a su derecha, aquí estaría por defecto el siguiente número más grande en el árbol. Por tanto, se busca el más pequeño de esa rama, y si lo encontraramos, usaríamos una función específica que nos encuentra el valor mínimo de una rama, min_value_node.

Si no tiene nodo a la derecha, se hará un bucle subiendo en la rama a través de los padres con el objetivo de encontrar un número más grande que el nodo dado. Al encontrarlo, se devuelve un punturo a este nodo. En caso de no haber más nodos hacia arriba de la rama, se devuelve el nodo root. Un detalle es que la función está adaptada para funcionar con otros compraradores, aunque aquí hemos descrito como si se usara el mayor que ('>'), pero funcionaría con un menor qué u otro comprarador.

Galería

Otros juegos

El cid cabalga de nuevo

El Cid se despierta en el siglo XXI, descubre que Jimena no descansa a su lado, ¿Podrá el Cid salir de esta?

Más Información

LE PETIT DELICE

Sobrevive tu jornada como camarero. No dejes que se rompan los platos, depende tu nueva vida como jóven independiente de ello.?

Más Información