Estructuras de datos personalizadas para algunas de las estructuras de datos más utilizadas en C ++
El propósito de este repositorio es demostrar cómo funcionan los contenedores y las estructuras de datos debajo del capó. La mayoría de las API coinciden con la API estándar que se encuentra dentro de las bibliotecas STL y Boost. De hecho, hay pocas mejoras y adiciones valiosas a lo que ofrecen las bibliotecas estándar.
Las siguientes estructuras de datos se implementan al momento de escribir este readme:
Excepto String y Trie que son específicos de tipo, todas las demás estructuras de datos se implementan genéricamente como plantillas que las hacen utilizables en diferentes tipos de datos.
NOTA: Las especializaciones pueden tener que definirse para tipos no estimitivos que utilizan métodos especiales dentro de un tipo de estructura de datos aplicable
Para la biblioteca lista para usar, consulte los lanzamientos
La mayoría de las estructuras de datos utilizan plantillas, eliminando así la necesidad de un archivo fuente separado. Por ejemplo, Vector se puede usar solo como encabezado. La biblioteca generada solo será necesaria para tipos con implementación no genérica y un archivo fuente separado. A partir de la escritura de este ReadMe, necesita que su aplicación se vincule con libCustomDataStructures.so Así que solo si está utilizando las estructuras de datos String y Trie .
Para construir el proyecto, use el script de compilación en el árbol de origen con -a opción de la siguiente manera:
./build.sh -a
Limpie la salida generada y construya artefactos con la opción -c
./build.sh -c
Para conocer los detalles de uso de otras opciones como el tipo de compilación y la configuración del generador, use la opción -h con el script
./build.sh -h
La aplicación del carrito de compras sirve como referencia de uso de las estructuras de datos personalizadas implementadas aquí.
Si escribir código para estructuras de datos y algoritmos en C ++ y Dog Fooding te hace marcar como yo, estoy seguro de que disfrutarás contribuyendo a este proyecto. Si conoce a alguien que pueda estar interesado en ese trabajo, hágales saber. Estoy buscando buscar algunas mejoras y adiciones emocionantes y una revisión crítica de la implementación existente.
Como colaborador potencial, es bienvenido
Soy accesible en [email protected] para cualquier cosa