Se stai utilizzando un compilatore pre TR1, allora i puntatori intelligenti
boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr
boost::scoped_array
boost::shared_array
Se il tuo compilatore ha già dei puntatori intelligenti, usali.
Il motivo è ovvio che il C ++ senza puntatori intelligenti non è fondamentalmente C ++
Le librerie boost ptr_contaier.
Tutti i contenitori STL re-implementati specificamente per contenere puntatori. Non solo i contenitori prendono la proprietà dei puntatori in modo che quando il contenitore viene distrutto, esso automaticamente distrugga tutti i puntatori. MA fornisce anche accessi agli elementi come normali riferimenti agli oggetti (non puntatori), questo rende facile l'uso degli oggetti negli algoritmi standard senza i funtori wrapper.
Le librerie lambda di potenziamento. (vedi commento sotto)
I funtori e i legatori STL sono OK per cose semplici. Ma boost :: lambda ha fatto il passo successivo e rende le cose molto più semplici usando gli algoritmi standard.
boost :: any e boost :: variant
Quando è necessario tenere oggetti senza voler conoscere il loro esatto tipo.
Multi Index Containers
Contenitori che consentono più modi diversi per accedere agli elementi.
Sono finiti i giorni in cui hai un vettore di oggetti e una mappa separata per il vettore di ricerca rapida. Questo riduce il boilerplate che è necessario scrivere per mantenere i due contenitori quando si inseriscono / eliminano elementi nei contenitori.
boost :: lexical_cast
Probabilmente il meno utile nella vita reale ma molto divertente da giocare è boost :: lexical_cast. Converte qualsiasi oggetto in / da una stringa (purché tale tipo abbia gli operatori appropriati < < e > > definiti). Molto utile per scaricare i messaggi di errore durante il de-bugging.