




Boost - это набор библиотек C++. 10 из которых включены в tr1 C++ 0x.
Вы можете начните с повышения здесь.
Вы получаете многое из того, что есть в C++ 0x. Но помимо этой общности, некоторые из лучших особенностей - это простой библиотека регулярных выражений, библиотека приведения для приведение строк к целым (лексическое приведение):
int iResult = 0;
try
{
iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
cout << "Unable to cast string to int";
}
A библиотека даты / времени, среди прочего ...
using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday
Также есть Интерфейс Python (Boost Python), лексер / парсер DSL (Boost Spirit):
// A grammar in C++ for equations
group = '(' >> expression >> ')';
factor = integer | group;
term = factor >> *(('*' >> factor) | ('/' >> factor));
expression = term >> *(('+' >> term) | ('-' >> term));
и это просто царапина на поверхности ...
Boost - это очень обширная библиотека (обычно) общих конструкций, которая может помочь практически в любом приложении. Об этом может свидетельствовать тот факт, что в спецификации C++ 0x было включено множество компонентов ускорения.
Он также переносится, по крайней мере, на основные платформы, и должен быть переносимым практически на все, что связано с компилятором C++, в основном совместимым со стандартами.
Единственное предупреждение заключается в том, что между библиотеками boost может быть много смешанных зависимостей, что затрудняет выбор только определенного компонента для распространения (кроме всей библиотеки boost).
Как дополнение к этому сообщению: для извлечения подмножеств Boost вы можете использовать утилиту bcp boost.org/doc/libs/1_36_0/tools/bcp/bcp.html
На самом деле внутризависимостей относительно мало. Это конкретная цель дизайна Boost. boost.org/development/reuse.html
Большая часть Boost реализована только в виде заголовка. Что касается остальных вещей, вам, вероятно, лучше связать его статически, чем распространять библиотеки DLL / общие библиотеки.
Вы можете просто прочитать страницу Повышение фоновой информации, чтобы получить краткий обзор того, почему вам следует использовать Boost и для чего вы можете его использовать. Стоит потратить несколько минут.
Я удивлен, что автор этого вопроса не подумал это прочитать.
В его защиту, теперь он доступен здесь и доступен для поиска всем на сайте (и, вероятно, занимает высокое место в результатах поиска Google).
Boost организован несколькими членами стандартного комитета. Так что это питательная среда для библиотек, которые войдут в следующий стандарт.
В связи с появлением tr1 в ближайшее время приятно осознавать, что над бустом уже многое сделано. Многие библиотеки в tr1 в основном адаптированы непосредственно из оригиналов boost и, таким образом, были опробованы и протестированы. Разница в том, что они были перемещены в пространство имен std :: tr1 (а не в усиление).
Все, что вам нужно сделать, это добавить следующее к включить путь поиска вашего компилятора по умолчанию:
<boost-install-path>/boost/tr1/tr1
Затем, когда вы включаете стандартные заголовки, boost автоматически импортирует все необходимые данные в пространство имен std :: tr1
Чтобы использовать std :: tr1 :: share_ptr, вам просто нужно включить <memory>. Это даст вам все умные указатели в одном файле.
Способствовать росту - это набор высококачественных рецензируемых библиотек C++, в которых особое внимание уделяется переносимости и корректности. Фактически он действует как полигон для новых дополнений к языку и стандартной библиотеке. Посетите их веб-сайт для получения более подробной информации.
Преимущества Boost: Он широко доступен, может быть перенесен на любой современный компилятор C++ или на любую платформу. Функции не зависят от платформы, вам не нужно изучать новый дизайн потоков для каждой новой платформы. Он стандартным образом инкапсулирует множество специфичных для платформы функций, таких как файловые системы.
Это то, с чем должен был поставляться C++! Большая часть популярности Java заключалась в том, что она поставляется со стандартной библиотекой, позволяющей делать почти все, что вы хотели. К сожалению, C++ унаследовал только ограниченные стандартные функции C / Unix.
99% портативный.
Я бы сказал, что у него довольно много библиотек, которые действительно полезны, когда вы обнаруживаете потребность, которая решается с помощью boost. Вы либо сами кодируете, либо используете очень надежную библиотеку. Наличие готовых исходников для таких вещей, как Multi-Index, Lambda, Program Options, RegEx, SmartPtr и Tuple - это потрясающе ...
Лучше всего потратить некоторое время на изучение документации по различным библиотекам и оценку того, может ли она быть вам полезна.
Достойный!!
Несколько лет назад некоторые части Boost не работали на компиляторах C++ от Sun и IBM. Не уверен в ситуации, но я бы не стал оценивать портативность где-то рядом с 99%.
@john еще раз проголосовал за этот комментарий. Компилятор Borland / CodeGear / Embarcadero также не может работать со многими частями повышения.
Все вышеперечисленное, а также поощряет использование множества современных передовых методов C++. Это улучшает качество вашего кода.
Boost - это здорово, но просто играя в Devil's Advocate, вот несколько причин, по которым вы можете не захотеть использовать Boost:
Все это не означает, что вам не следует заглядывать в код Boost и самому черпать идеи, даже если вы не используете Boost как таковой.
С пунктом 5: Согласен! Попробуйте отладить библиотеку графов ускорений ...
Только shared_ptr и weak_ptr, особенно в многопоточном коде, заслуживают установки boost. BOOST_STATIC_ASSERT также неплохо подходит для проверки логики во время компиляции.
Тот факт, что многие классы и утилиты в boost находятся в заголовках, что означает, что вы можете получить большую функциональность без необходимости вообще ничего компилировать, также является плюсом. Переносимость обычно не проблема, если вы не используете очень старый компилятор. Однажды я попытался заставить MPL работать с VC6, и он распечатал 40 000 предупреждений / внутренних ошибок, прежде чем полностью взорваться. Но в целом большая часть библиотеки должна работать независимо от вашей платформы или поставщика компилятора.
Примите во внимание тот факт, что довольно много вещей из Boost уже есть в TR1 и, скорее всего, будут в следующей версии стандартной библиотеки C++. Это довольно большая поддержка.
Также обратите внимание, что большая часть повышения - это шаблоны, поэтому сборка не требуется. (просто включите правильные файлы заголовков).
Несколько частей, которые действительно требуют сборки, не являются обязательными:
Каждый из них может быть построен независимо, что предотвращает ненужное раздувание ненужного кода.
Мне нравится этот ответ, поскольку он показывает реальные варианты использования Boost.