Как мне начать использовать boost

Я слышал много о повышении здесь, и я начинаю думать, что это может многое помочь в моей разработке программного обеспечения. Более того, в concurrency и управлении памятью в моем конкретном случае, поскольку у нас было много ошибок в этой области.

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

Кроме того, есть ли учебники и 101 ресурс, на которые я могу быстро взглянуть, чтобы просто почувствовать и понять, как использовать boost.

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

Связанные

Ответ 1

У Boost есть невообразимое количество библиотек. Легкие для начала работы -

  • noncopyable
  • массив
  • circular_buffer
  • Еогеасп
  • (один из моих личных фаворитов)
  • smart_ptr
  • date_time

Более продвинутые включают

  • лямбда
  • привязка
  • iostreams
  • сериализации
  • темы

Привыкание к увеличению требует времени, но я заверяю вас, что это сделает вашу жизнь намного лучше. Кроме того, глядя на то, как кодируются форматированные библиотеки, вы сможете улучшить кодировку С++, особенно шаблоны.

Вы упомянули, что вы должны искать, прежде чем пытаться повысить. Я согласен, что функциональные объекты - отличная вещь для исследования. Кроме того, обязательно посмотрите на программирование шаблонов. Общей проблемой является то, что вы знаете, когда использовать квалификатор typename для зависимых типов. По большей части, однако, библиотеки хорошо документированы с примерами и справочными материалами.

Ответ 2

Обучающий импульс обсуждается здесь. Что касается полезных функций языка? Все они. С++ - это опасный язык для использования, если вы его недостаточно знаете. RAII, функторы/объекты функций и шаблоны, вероятно, охватывают наиболее важные аспекты. Boost разработан аналогично STL, поэтому знание вашей стандартной библиотеки имеет важное значение. Boost сам использует много метапрограммирования шаблонов, но, как пользователь библиотеки, вам это часто не понадобится (если вы не начнете играть с Boost.MPL)

Ошибки, связанные с управлением памятью, являются хорошим показателем того, что это С++, а не Boost, вам нужно освежиться. Способы безопасного обращения с памятью хорошо известны и не являются специфическими для Boost. (С очевидным исключением Boost smart pointers). RAII, вероятно, является самой важной концепцией, чтобы понять, как справиться с такими проблемами.

Ответ 3

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

  • Шаблоны
  • функторы
  • Исключения
  • STL
    • итераторы
    • Алгоритмы
    • Контейнеры

... среди прочих.

Есть ли у вас учебники и 101 ресурс, на которые я могу быстро взглянуть, чтобы просто почувствовать и понять, как использовать boost.

Boost хорошо документирован. Начните здесь.

Слишком много библиотек, чтобы потеряться. Я бы сказал, начните с чего-то простого, может быть, умных указателей или Boost.Test(Unit Test framework), что поможет вам быстро начать работу. Кроме того, попробуйте подумать о проблеме, которую вы не можете решить с помощью STL. Затем найдите документацию Boost или отправьте сообщение здесь.

Если вам удобно работать с функциональным программированием, смотрите библиотеки MPL/Lambda.

Ответ 4

Первыми ting IMO являются интеллектуальные указатели. Интеграция в новый код проста и обычно не является проблемой для существующего кода. Они облегчают управление памятью и работают и во многих других ресурсах.

С++ дает вам возможность управлять собственной памятью, умные указатели позволяют вам (в основном) использовать крыло, когда вам это не нужно.

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

У меня мало опыта с повышением за пределами этих двух, но большая часть остатка довольно "ситуационная" - вам может понадобиться или не понадобиться. Получите обзор по библиотекам и посмотрите, что вам нужно.

boost::any и boost::variant хороши, вам нужен вариантный тип данных с двумя разными подходами.

boost::regex, если вам нужен синтаксический анализ текста.

boost::thread и boost::filesystem помогут вам написать переносимый код. Если у вас уже есть хорошие библиотеки для конкретной платформы, вам могут и не понадобятся, но в любом случае они лучше, чем API или уровень С++.

Возможно, вам понравилось мое введение в повысить интеллектуальные указатели и довольно неортодоксальный для них.

Ответ 6

После чтения Вне стандартной библиотеки С++: введение в Boost, я бы рекомендовал небрежно просматривать документацию на boost.org, чтобы получить представление о том, что доступно. Вы можете совершить глубокое погружение в специальную библиотеку ускорения, если она похожа на подходящую для конкретного приложения.

Ответ 7

Я думаю, что shared_ptr может быть самым простым местом для начала. Начните использовать его в виде простых указателей или типов данных auto_ptr.

Вы также можете посмотреть на weak_ptr.