Использование Boost на ubuntu

Я слышал много хороших комментариев о Boost в прошлом и думал, что попробую. Поэтому я загрузил все необходимые пакеты из диспетчера пакетов в Ubuntu 9.04. Теперь у меня возникли проблемы с тем, как на самом деле использовать библиотеки darn.

Кто-нибудь знает хороший учебник по Boost, который проходит весь путь от Hello World до Advanced Topics, а также описывает, как скомпилировать программы с помощью g++ на ubuntu?

Ответ 1

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

Что касается компиляции, в файлах заголовков определяется 80% реализации библиотеки, что делает компиляцию тривиальной. например, если вы хотите использовать shared_ptr, просто добавьте

#include <boost/shared_ptr.hpp>

и скомпилируйте, как обычно. Не нужно добавлять пути библиотеки к вашей команде g++ или указать -llibboost. Пока каталог boost находится в вашем пути включения, вы все настроены.

Из документации по ускорению:

Единственными библиотеками, которые необходимо скомпилировать и связать, являются следующие: единственные библиотеки Boost, которые должны быть созданы отдельно:

  • Boost.Filesystem
  • Boost.IOStreams
  • Boost.ProgramOptions
  • Boost.Python(см. документацию по сборке Boost.Python перед сборкой и установкой)
  • библиотека Boost.regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.Thread
  • Boost.Wave

В нескольких библиотеках есть дополнительные скомпилированные двоичные файлы:

  • Boost.DateTime имеет двоичный компонент, который необходим только в том случае, если вы используете его функции to_string/from_string или сериализации, или если вы нацеливаете Visual С++ 6.x или Borland.
  • Boost.Graph также имеет двоичный компонент, который необходим только в том случае, если вы собираетесь анализировать файлы GraphViz.
  • Boost.Test можно использовать в режиме "только для заголовка" или "отдельно скомпилированного", хотя отдельная компиляция рекомендуется для серьезного использования.

Итак, если вы используете одну из перечисленных библиотек, используйте Руководство по началу работы, чтобы начать работу с компиляцией и ссылка на Boost.

Ответ 2

На веб-сайте Boost есть несколько полезных руководств, они просто вид hidden.

Ответ 3

Документация библиотеки представляет собой смешанную сумку. Некоторые из них хороши, но некоторые из них скорее справочные, чем руководство. Лучшим руководством для (некоторых) библиотек Boost является книга Вне стандартной библиотеки С++. По крайней мере, введение дает одно абзацное описание многих библиотек. Оттуда вы можете решить, какая библиотека наиболее важна для ваших текущих потребностей, и, если она в книге, прочитайте главу об этом или прочитайте документацию на веб-сайте.

Если вы читаете немецкий, там хорошее онлайн-руководство. Google translate делает достаточно хорошую работу, чтобы не говорящий, как я, мог понять это.

Кроме того, если у вас нет большого опыта работы с С++, я бы начал с более простых библиотек (например, smart_ptr, tuple, conversion, tokenizer, regex, date_time, test), прежде чем попробовать более сложные (bind, variant, любой), или действительно продвинутые (концепции, MPL, Fusion).

Ответ 4

Используя Easypeasy 1.1 (для нетбуков), основанный на Ubuntu, я смог использовать Synaptic Package Manager для установки, я считаю, libboost-dev. Затем просто добавив:

#include "boost/foreach.hpp"

Мне удалось заменить существующие строки в существующем приложении (у которого есть класс Ask, который не имеет ничего общего с boost):

for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii)
    std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl;

с:

BOOST_FOREACH (Ask* ii, ui)
     std::cout << ii->prompt() << ii->answer() << std::endl;

Как я понимаю, это только функция заголовка. Я еще не использовал ничего, требуя изменения времени ссылки.

Ответ 5

Я просто смотрел на этот немецкий пособие по продвижению, и нашел, что есть и english (в той же книге). Это выглядит неплохо, просто прочитайте вступительные страницы, которые весьма полезны

Ответ 7

Библиотеки поставляются с документацией, и многие из них имеют учебники как часть документации. Просто начните читать.

Ответ 8

Boost - это не язык программирования, а структура приложения - потому что это всего лишь коллекция библиотек, нет такой программы, как программа Boost "Hello World". Большинство библиотек в Boost можно использовать более или менее независимо, и они различаются по размеру от одной функции до массивных библиотек, которые могут стоять в одиночестве.

Лучший способ познакомиться с Boost - это просто попытаться работать с ним, когда вы пишете новый код. Используйте smart_ptr, когда можете; используйте MPL в следующий раз, когда вы хотите выполнить компиляцию. Там много разнообразия в Boost, но вам, вероятно, следует начать просмотр раздела Utility; это самые легкие и наиболее часто используемые библиотеки.