ПрограммированиеТермины

Boost

Boost - это огромная коллекция различных библиотек для программистов на C++. Все библиотеки, входящие в коллекцию, свободно распространяются вместе с исходниками и к тому же являются полностью кросс-платформенными.

Описание
Ссылки

Описание

Мнения относительно использования буста различаются. Некоторые считают его стандартом де-факто и необходимым дополнением к STL. Некоторые, напротив, избегают всякого использования буста в проектах (по крайней мере, коммерческих и в которых работает более одного человека), так как это лишняя зависимость в проекте (добавляются сложности при извлечении версии из репозитория, ну и вообще сложности управления проектом).

Несколько замечаний относительно использования буста. Во-первых, это в основном шаблонная библиотека, поэтому большинство частей буста вообще не нужно компилировать и настраивать. Во-вторых, некоторые смущаются размером буста, при необходимости включить его в исходники; но в состав буста входит утилита, позволяющая извлекать из буста необходимое подмножество исходников с сохранением зависимостей.

Рассмотрим проблему подробнее. Некоторые части буста можно однозначно рекомендовать к применению:
1. smart_ptr — это набор шаблонных классов умных указателей, которые вместе со стандартным указателем std::auto_ptr практически исчерпывают потребности в умных указателях. Рекомендуется всегда использовать их вместо своих доморощенных аналогов, так как они надёжны, документированы и их можно считать стандартом де-факто.
2. pointer_containers — это адаптации всех стандартных контейнеров STL для указателей. Например, boost::ptr_vector<T> семантически эквивалентен std::vector<shared_ptr<T> >, но может быть гораздо эффективней, особенно в многопоточной среде. Рекомендуется использовать эти контейнеры вместо std::vector<T *> или даже std::vector<shared_ptr<T> >.
3. boost::bind — это набор врапперов, упрощяющих работу с алгоритмами STL. Рекомендуется использовать вместо стандартных биндеров bind1st/bind2nd, mem_fun и пр. boost::lambda является гораздо более мощным средством, но работа с ним уже значительно сложней — обычно не рекомендуется.

Некоторые части буста требуют довольно хорошей подготовки программиста и являются весьма сложными. Не используйте их, если только вы не один в проекте или если вы не работаете в команде высококлассных профессионалов (да и то, они скорей всего не будут рады):
1. boost::spirit — средство создания высокоэффективных парсеров (могут быть быстрее даже встроенных в язык функций типа atof() ).
2. boost::mpl — библиотека метапрограммирования с фантастическими возможностями.

Рассматривайте вопрос о использовании буста и его компонентов в своём конкретном случае. Обычно такие решения принимает lead-programmer проекта, а остальные участники работают в рамках существующих договоренностей.

Ссылки

Весь boost целиком, вместе с документацией вы можете скачать с официального сайта: http://www.boost.org

Что такое Boost?

7 августа 2005 (Обновление: 13 июня 2009)