Si está utilizando un compilador pre TR1, entonces punteros inteligentes
boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr
boost::scoped_array
boost::shared_array
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.