Boost ha estado disponible recientemente en el proyecto en el que estoy trabajando, y no tengo mucha experiencia con él. La biblioteca tiene tantas partes y características que es difícil saber por dónde empezar a aprenderla, especialmente porque trataré de aprenderla mientras hago el código de producción (por lo que no puede retrasarme demasiado).
Le agradecería mucho que alguien pudiera enumerar alrededor de 3 a 5 características que son muy útiles en general, la programación diaria y explicar por qué son útiles. Entonces puedo comenzar a aprenderlos y usarlos; al menos me dará un punto de apoyo en la biblioteca y un lugar amigable para comenzar a aprenderlo / aplicarlo :)
¡Gracias por adelantado!
Respuestas:
Si está utilizando un compilador pre TR1, entonces punteros inteligentes
Si su compilador ya tiene punteros inteligentes, úselos.
La razón es obvia C ++ sin punteros inteligentes básicamente no es C ++
El impulso ptr_contaier bibliotecas.
Todos los contenedores STL se volvieron a implementar específicamente para contener punteros. Los contenedores no solo toman posesión de los punteros, de modo que cuando el contenedor se destruye, destruye automáticamente todos los punteros. PERO también proporciona acceso a elementos como referencias de objetos normales (no punteros), esto facilita el uso de los objetos en algoritmos estándar sin funpers de contenedor.
El impulso de las bibliotecas lambda. (ver comentario más abajo)
Los functores y ligantes STL están bien para cosas simples. Pero boost :: lambda dio el siguiente paso y simplifica mucho las cosas al usar los algoritmos estándar.
boost :: any y boost :: variante
Cuando necesita sostener objetos sin querer saber su tipo exacto.
Contenedores de índice múltiple
Contenedores que permiten múltiples formas diferentes de acceder a los elementos.
Atrás quedaron los días en que tienes un vector de objetos y un mapa separado para un vector de búsqueda rápida. Esto reduce el límite que necesita escribir para mantener los dos contenedores al insertar / eliminar elementos en los contenedores.
boost :: lexical_cast
Probablemente el menos útil en la vida real, pero es muy divertido jugar con él :: lexical_cast. Convierte cualquier objeto a / desde una cadena (siempre que ese tipo tenga los operadores << y >> adecuados definidos). Muy útil para descargar mensajes de error al eliminar errores.
fuente
Boost no es un marco, ni una biblioteca. Es una colección de biblioteca de calidad controlada y revisada por pares. No aprendes Boost. Las bibliotecas son individuales: cuando necesita algo, verifica si está en Boost, si es así, aprende esa biblioteca. Eso es. No puede obtener una comprensión de boost :: opcional de obtener una comprensión de boost :: variante.
fuente
Boost es una colección de bibliotecas. La próxima vez que hagas un código kata, elige una biblioteca en Boost que creas que puede ayudarte y úsala. La documentación es muy buena y no debería tener problemas para elegir usos simples. Los más complejos vendrán cuando intentes hacer cosas más inteligentes.
Ejemplo: un singleton seguro para subprocesos con boost :: thread call_once.
Ejemplo: lea un archivo de configuración de clave: valor utilizando el tokenizer.
fuente