Если вы используете компилятор до TR1, то умные указатели
boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr
boost::scoped_array
boost::shared_array
Если ваш компилятор уже имеет умные указатели, используйте их.
Причина очевидна, C ++ без умных указателей в принципе не является C ++
Расширенные библиотеки ptr_contaier.
Все контейнеры STL заново реализованы специально для хранения указателей. Контейнеры не только становятся владельцами указателей, поэтому, когда контейнер уничтожается, он автоматически уничтожает все указатели. НО он также обеспечивает доступ к элементам в виде обычных ссылок на объекты (не указателей), что позволяет легко использовать объекты в стандартных алгоритмах без функторов-обёрток.
Повышение лямбда-библиотеки. (см. комментарий ниже)
Функторы и связующие STL подходят для простых вещей. Но boost :: lambda сделал следующий шаг и намного упростил использование стандартных алгоритмов.
Boost :: любой и Boost :: вариант
Когда вам нужно держать объекты, не желая знать их точный тип.
мульти Индекс Контейнеры
Контейнеры, которые позволяют множеству различных способов доступа к элементам.
Прошли те времена, когда у вас есть вектор объектов и отдельная карта для быстрого поиска вектора. Это сокращает шаблон, который нужно написать, чтобы сохранить два контейнера при вставке / удалении элементов в контейнеры.
повышение :: lexical_cast
Вероятно, наименее полезным в реальной жизни, но с ним очень весело играть, это boost :: lexical_cast. Он преобразует любой объект в / из строки (при условии, что для этого типа определены соответствующие операторы << и >>). Очень полезно для сброса сообщений об ошибках при отладке.