Разработка приложений на C++ с использованием Boost: рецепты, упрощающие разработку вашего приложения
Покупка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Автор:
Полухин Антон
Год издания: 2020
Кол-во страниц: 346
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-868-5
Артикул: 751481.01.99
Если вы хотите воспользоваться преимуществами Boost и языка C++ и не путаться, какую библиотеку в какой ситуации использовать, тогда эта книга для вас!
Начиная с основ, вы перейдете к изучению того, как библиотеки Boost упрощают разработку приложений. Увидите, какую работу можно выполнить во время компиляции и на что способны контейнеры Boost. Научитесь разрабатывать качественные, быстрые и портативные приложения. От манипулирования изображениями до графов, каталогов, таймеров, файлов и работы в сети - каждый найдет для себя интересную тему. Напишите программу один раз и используйте ее в операционных системах Linux, Windows, macOS и Android. Обратите внимание, что знания, полученные в ходе прочтения этой книги, не устареют, поскольку все больше и больше библиотек Boost становятся частью стандарта C++.
Эта книга предназначена для разработчиков, стремящихся улучшить свои знания о Boost, и тех, кто хочет упростить процесс разработки приложений. Предполагается, что читатель знаком с C++ и имеет базовые знания стандартной библиотеки.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Антон Полухин Разработка приложений на C++ с использованием Boost Рецепты, упрощающие разработку вашего приложения
Boost C++ Application Development Cookbook Recipes to simplify your application development Antony Polukhin
Разработка приложений на C++ с использованием Boost Рецепты, упрощающие разработку вашего приложения Антон Полухин Москва, 2020
УДК 004.4 ББК 32.973.202 П49 Антон Полухин П49 Разработка приложений на C++ с использованием Boost. Рецепты, упрощающие разработку вашего приложения / пер. с анг. Д. А. Беликова. – М.: ДМК Пресс, 2020. – 346 с.: ил. ISBN 978-5-97060-868-5 Это руководство знакомит читателя с библиотеками Boost, которые помогают разрабатывать качественные, быстрые и портативные приложения. Удобная структура книги, включающая ряд стандартных разделов, упрощает изучение материала. От простых тем (повседневное использование библиотек, управление ресурсами) автор последовательно переходит к сложным (метапрограммирование, многопоточность, межпроцессное взаимодействие, асинхронное взаимодействие, работа с большими библиотеками Boost). Издание предназначено для разработчиков, желающих улучшить свои знания в области Boost и упростить процессы разработки приложений. Для освоения изложенных в книге приемов необходимы знакомство с C++ и базовые знания стандартной библиотеки. Также понадобятся современный компилятор C++, библиотеки Boost (подойдет любая версия, но рекомендуется 1.65 или более новая), среда разработки QtCreator, утилита qmake. Есть возможность модифицировать и запускать примеры онлайн: http://apolukhin.github.io/Boost-Cookbook/. УДК 004.4 ББК 32.973.202 All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. © 2017 Packt Publishing © Оформление, издание, перевод, ДМК Пресс, 2020 ISBN (анг.) 978-1-78728-224-7 ISBN (рус.) 978-5-97060-868-5
Оглавление Предисловие от издательства ...................................................................20 Об авторе ...........................................................................................................21 О рецензентах .................................................................................................22 Вступительное слово автора .....................................................................23 Вступительное слово от сообщества С++ .............................................24 Предисловие .............................................................................................. 25 Глава 1. Приступаем к написанию приложения .................................29 Вступление ............................................................................................................29 Получение параметров конфигурации ...............................................................30 Подготовка ........................................................................................................30 Как это делается… .............................................................................................30 Как это работает................................................................................................31 Дополнительно... ..............................................................................................31 См. также ...........................................................................................................33 Сохранение любого значения в контейнере или переменной ..........................33 Подготовка ........................................................................................................34 Как это делается... .............................................................................................34 Как это работает................................................................................................34 Дополнительно... ..............................................................................................35 См. также ...........................................................................................................36 Хранение одного из нескольких выбранных типов в контейнере или переменной....................................................................................................36 Подготовка… .....................................................................................................36 Как это делается… .............................................................................................36 Как это работает................................................................................................37 Дополнительно... ..............................................................................................37 См. также ...........................................................................................................38 Использование более безопасного способа работы с контейнером, в котором хранится один из нескольких выбранных типов .............................38 Подготовка ........................................................................................................40 Как это делается... .............................................................................................40 Как это работает................................................................................................41 Дополнительно... ..............................................................................................41 См. также ...........................................................................................................42
Возврат значения или флага «значения нет» .....................................................42 Подготовка ........................................................................................................42 Как это делается... .............................................................................................42 Как это работает….............................................................................................43 Дополнительно… ..............................................................................................44 См. также ...........................................................................................................44 Возвращение массива из функции ......................................................................44 Подготовка ........................................................................................................44 Как это делается… .............................................................................................44 Как это работает….............................................................................................45 Дополнительно… ..............................................................................................45 См. также ...........................................................................................................46 Объединение нескольких значений в одно ........................................................46 Подготовка ........................................................................................................46 Как это делается… .............................................................................................46 Как это работает….............................................................................................48 Дополнительно… ..............................................................................................48 См. также ...........................................................................................................48 Привязка и переупорядочение параметров функции .......................................49 Подготовка ........................................................................................................49 Как это делается... .............................................................................................49 Как это работает….............................................................................................50 Дополнительно… ..............................................................................................51 См. также ...........................................................................................................52 Получение удобочитаемого имени типа ............................................................52 Подготовка ........................................................................................................52 Как это делается… .............................................................................................52 Как это работает….............................................................................................53 Дополнительно… ..............................................................................................53 См. также ...........................................................................................................54 Использование эмуляции перемещения C++11 .................................................54 Подготовка ........................................................................................................54 Как это делается… .............................................................................................54 Как это работает….............................................................................................56 Дополнительно… ..............................................................................................56 См. также ...........................................................................................................56 Создание некопируемого класса .........................................................................57 Подготовка ........................................................................................................57 Как это делается… .............................................................................................57 Как это работает….............................................................................................58 См. также ...........................................................................................................58 Создание некопируемого, но перемещаемого класса .......................................58 Подготовка ........................................................................................................59 Как это делается… .............................................................................................59 Как это работает….............................................................................................61 Дополнительно… ..............................................................................................61 См. также ...........................................................................................................62 6 Оглавление
Использование алгоритмов C++14 и C++11 ........................................................62 Подготовка ........................................................................................................62 Как это делается… .............................................................................................63 Как это работает….............................................................................................63 Дополнительно… ..............................................................................................63 См. также ...........................................................................................................64 Глава 2. Управление ресурсами ................................................................65 Вступление ............................................................................................................65 Управление указателями на классы, которые не покидают область видимости ...............................................................................................65 Подготовка ........................................................................................................66 Как это делается… .............................................................................................66 Как это работает….............................................................................................67 Дополнительно… ..............................................................................................68 См. также ...........................................................................................................69 Подсчет указателей на классы .............................................................................69 Подготовка ........................................................................................................69 Как это делается… .............................................................................................70 Как это работает….............................................................................................70 Дополнительно… ..............................................................................................71 См. также ...........................................................................................................72 Управление указателями на массивы, которые не покидают область видимости ...............................................................................................72 Подготовка ........................................................................................................72 Как это делается… .............................................................................................73 Как это работает….............................................................................................73 Дополнительно… ..............................................................................................73 См. также ...........................................................................................................74 Подсчет указателей на массивы ..........................................................................74 Подготовка ........................................................................................................75 Как это делается… .............................................................................................75 Как это работает….............................................................................................77 Дополнительно… ..............................................................................................77 См. также ...........................................................................................................77 Хранение любых функциональных объектов в переменной ............................78 Подготовка ........................................................................................................78 Как это делается… .............................................................................................78 Как это работает….............................................................................................79 Дополнительно… ..............................................................................................79 См. также ...........................................................................................................80 Передача указателя на функцию .........................................................................80 Подготовка ........................................................................................................80 Как это делается… .............................................................................................80 Как это работает….............................................................................................80 Дополнительно… ..............................................................................................80 См. также ...........................................................................................................81 Оглавление 7
Хранение любых лямбда-функций C++11 в переменной ..................................81 Подготовка ........................................................................................................81 Как это делается… .............................................................................................81 Дополнительно… ..............................................................................................81 См.также ............................................................................................................82 Контейнеры указателей .......................................................................................82 Подготовка ........................................................................................................84 Как это делается… .............................................................................................84 Как это работает….............................................................................................84 Дополнительно… ..............................................................................................84 См. также ...........................................................................................................85 Делайте это при выходе из области видимости! ................................................86 Подготовка ........................................................................................................86 Как это делается… .............................................................................................86 Как это работает….............................................................................................87 Дополнительно… ..............................................................................................87 См. также ...........................................................................................................88 Инициализация базового класса членом класса-наследника ...........................88 Подготовка ........................................................................................................89 Как это делается… .............................................................................................89 Как это работает….............................................................................................89 Дополнительно… ..............................................................................................90 См. также ...........................................................................................................90 Глава 3. Преобразование и приведение ...............................................91 Вступление ............................................................................................................91 Преобразование строк в числа ............................................................................91 Подготовка ........................................................................................................92 Как это делается… .............................................................................................92 Как это работает….............................................................................................92 Дополнительно… ..............................................................................................93 См. также ...........................................................................................................94 Преобразование чисел в строки ..........................................................................94 Подготовка ........................................................................................................94 Как это делается… .............................................................................................94 Как это работает….............................................................................................95 Дополнительно… ..............................................................................................95 См. также ...........................................................................................................96 Преобразование чисел в числа ............................................................................96 Подготовка ........................................................................................................97 Как это делается… .............................................................................................97 Как это работает….............................................................................................98 Дополнительно… ..............................................................................................98 См. также ...........................................................................................................99 Преобразование пользовательских типов в строки и из строк .........................99 Как это делается… .............................................................................................99 Дополнительно… ............................................................................................101 См. также .........................................................................................................101 8 Оглавление
Приведение умных указателей ..........................................................................102 Подготовка ......................................................................................................102 Как это делается… ...........................................................................................102 Как это работает…...........................................................................................103 Дополнительно… ............................................................................................103 См. также .........................................................................................................103 Приведение полиморфных объектов ................................................................103 Подготовка ......................................................................................................104 Как это делается… ...........................................................................................104 Как это работает…...........................................................................................104 Дополнительно… ............................................................................................104 См. также .........................................................................................................105 Синтаксический анализ (parsing) простого ввода ............................................105 Подготовка ......................................................................................................106 Как это делается… ...........................................................................................106 Как это работает…...........................................................................................107 Дополнительно… ............................................................................................108 См. также .........................................................................................................110 Синтаксический анализ (parsing) сложного ввода ...........................................110 Подготовка ......................................................................................................110 Как это делается… ...........................................................................................110 Как это работает…. .........................................................................................113 Дополнительно… ............................................................................................114 См. также .........................................................................................................114 Глава 4. Уловки времени компиляции .................................................115 Вступление ..........................................................................................................115 Проверка размеров во время компиляции .......................................................115 Подготовка ......................................................................................................116 Как это делается… ...........................................................................................116 Как это работает…...........................................................................................116 Дополнительно… ............................................................................................118 См. также .........................................................................................................119 Активация использования шаблона функции для интегральных типов .......120 Подготовка ......................................................................................................120 Как это делается… ...........................................................................................120 Как это работает…...........................................................................................121 Дополнительно… ............................................................................................122 См. также .........................................................................................................123 Отключение использования шаблона функции для действительных типов ....123 Подготовка ......................................................................................................124 Как это делается… ...........................................................................................124 Как это работает…...........................................................................................124 Дополнительно… ............................................................................................125 См. также .........................................................................................................125 Создание типа из числа ......................................................................................125 Подготовка ......................................................................................................126 Оглавление 9
Как это делается… ...........................................................................................126 Как это работает…...........................................................................................127 Дополнительно… ............................................................................................127 См. также .........................................................................................................128 Реализация свойства типов (type trait) .............................................................128 Подготовка ......................................................................................................128 Как это делается… ...........................................................................................128 Как это работает…...........................................................................................128 Дополнительно… ............................................................................................129 См. также .........................................................................................................129 Выбор оптимального оператора для параметра шаблона ...............................129 Подготовка ......................................................................................................130 Как это делается... ...........................................................................................130 Как это работает…...........................................................................................131 Дополнительно… ............................................................................................131 См. также .........................................................................................................133 Получение типа выражения в C++03 .................................................................133 Подготовка ......................................................................................................133 Как это делается… ...........................................................................................133 Как это работает…...........................................................................................134 Дополнительно… ............................................................................................134 См. также .........................................................................................................135 Глава 5. Многопоточность .........................................................................137 Вступление ..........................................................................................................137 Создание потока выполнения ...........................................................................137 Подготовка ......................................................................................................138 Как это делается… ...........................................................................................138 Как это работает…...........................................................................................138 Дополнительно… ............................................................................................139 См. также .........................................................................................................141 Синхронизация доступа к общему ресурсу ......................................................141 Подготовка ......................................................................................................142 Как это делается… ...........................................................................................142 Как это работает…...........................................................................................143 Дополнительно… ............................................................................................144 См. также .........................................................................................................145 Быстрый доступ к общему ресурсу с использованием атомарных операций .........................................................................................145 Подготовка ......................................................................................................145 Как это делается... ...........................................................................................146 Как это работает..............................................................................................146 Дополнительно… ............................................................................................147 См. также .........................................................................................................148 Создание класса work_queue ..............................................................................148 Подготовка ......................................................................................................148 Как это делается… ...........................................................................................148 10 Оглавление