Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube · Telegram
Обзоры книг по C++
Boost

Boost — огромный набор библиотек.

Онлайн-примеры кода из книги, которые можно изменять и запускать

Антон Полухин. Разработка приложений на C++ с использованием Boost

346 страниц. ДМК Пресс, 2020

Antony Polukhin. Boost C++ Application Development Cookbook. Packt, 2013

Антон Полухин — автор нескольких библиотек Boost, поддерживает ряд старых библиотек и сейчас представляет Россию в международном комитете по стандартизации C++.

Оглавление:

  1. Приступаем к написанию приложения
  2. Управление ресурсами
  3. Преобразование и приведение
  4. Уловки времени компиляции
  5. Многопоточность
  6. Манипулирование задачами
  7. Манипулирование строками
  8. Метапрограммирование
  9. Контейнеры
  10. Сбор информации о платформе и компиляторе
  11. Работа с системой
  12. Касаясь верхушки айсберга

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

$ ./our_program.exe --apples=10 --oranges=20
Fruits count: 30

Какие-то вещи уже устарели, потому что стали частью стандарта, например, Boost.Any, Boost.Variant, Boost.Optional, Boost.Tuple, Boost.Bind, Boost.Move (семантика перемещения до C++11), Boost.SmartPtr, Boost.Function. Какие-то вещи просто любопытны. Как, например, имитация finally из языка Java. Полезных вещей в книге можно подсмотреть много, скажем, синтаксический анализ (parsing) сложного ввода с помощью Boost.Spirit. Там используется расширенная форма Бэкуса — Наура (РБНФ, Extended Backus–Naur Form; EBNF).

const bool success = boost::spirit::qi::parse(first, end,
    u4_[y] >> char_('-') >> u2_[m] >> char_('-') >> u2_[d]
);

Книга рассказывает о многих вещах, но довольно поверхностно. Но как ознакомительный обзор вполне годится.

Дэвид Р. Мюссер, Жилмер Дж. Дердж, Атул Сейни. C++ и STL: справочное руководство (2010, оригинал 2001)

Джереми Сик, Лай-Кван Ли, Эндрю Ламсдэйн. C++ Boost Graph Library

304 страницы. Питер, 2006

Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine. The Boost Graph Library. Addison-Wesley, 2002

Книга по довольно сложной части библиотеки Boost — графовой библиотеке.

Часть I — основные алгоритмы, поиск кратчайшего пути, минимальное о́стовное дерево, компоненты связности, максимальный поток, неявные графы («обход конём»), а также взаимодействие с другими графовыми библиотеками и производительность. Часть II — справочник.

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

Предисловия Александра Степанова — отдельный жанр. В этом своём четырёхстраничном эссе Александр Александрович успевает снова кратко изложить идеи обобщённого программирования, упомянуть что-нибудь сложное (multi-sorted algebras — многосортные алгебры), написать код на Лиспе, похвалить C++ за выразительность и тут же поругать:

«В шаблонах отсутствует разделение между интерфейсами и реализацией. Например, недавно я пытался откомпилировать пример STL-программы из десяти строк, используя один из наиболее популярных компиляторов C++... Я был в шоке, увидев несколько страниц неразборчивых сообщений об ошибках».

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

Содержание первой части:

  1. Введение
  2. Обобщённое программирование в C++
  3. Изучаем BGL
  4. Основные алгоритмы на графах
  5. Задачи нахождения кратчайших путей
  6. Задача минимального остовного дерева
  7. Компоненты связности
  8. Максимальный поток
  9. Неявные графы: обход конём
  10. Взаимодействие с другими графовыми библиотеками
  11. Руководство по производительности

Вторая часть (а это половина книги) — справочное руководство.

Книга не только рассказывает о графах и о том, как пользоваться библиотекой. Также есть главы, которые объясняют, почему во время проектирования создатели выбрали то или иное решение. Например, в деталях описана проблема бинарного метода.

Поизучать, как устроена библиотека BGL, стоит уже хотя бы ради того, чтобы посмотреть, как проектируют библиотеки в рамках парадигмы обобщённого программирования. Там пересекаются многие темы, причём иногда с неожиданной стороны: специализация шаблонов, поиск Кёнига, типажи (traits) и т. д.

В качестве примера строится граф на основе файла с данными об актёрах (для разбора используется библиотека Boost Tokenizer Library), нужно найти кратчайший путь от заданного актёра до Кевина Бэкона. Такую задачу решают в Университете Вирджинии.

4 октября 2024
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Книги по C++
Книги Бьерна Страуструпа
Учебная литература. Часть I / Часть II / Часть III. Книги Герберта Шилдта / Часть IV
Русскоязычная литература. Часть I (А—Г) / Часть II (Д—Кр) / Часть III (Ку—О) / Часть IV (П—Я)
Стандартная библиотека шаблонов
Boost
Советы и задачи по языку
Структуры данных, алгоритмы, решение прикладных задач
Что выбрать? (Обновляется)
Также может быть интересным
© MMXI—MMXXV. RSS
 Boosty
Светлая тема / тёмная тема