Разработка приложений на C++ с использованием Boost
Онлайн Примеры
Здесь вы найдёте исходные коды примеров из книги.
Экспериментируйте, компилируйте, запускайте, меняйте примеры.
- Показать все рецепты
- Скрыть рецепты
Главы
Кликните на рецепт, чтобы увидеть его исходники.
-
Глава 01: Приступаем к написанию приложения
- Получение параметров конфигурации (часть 1, часть 2)
- Сохранение любого значения в контейнере или переменной
- Хранение одного из нескольких выбранных типов в контейнере или переменной
- Использование более безопасного способа работы с контейнером, в котором хранится один из нескольких выбранных типов (чать 1, часть 2)
- Возврат значения или флага «значения нет»
- Возвращение массива из функции
- Объединение нескольких значений в одно (чать 1, чать 2)
- Привязка и переупорядочение параметров функции
- Получение удобочитаемого имени типа
- Использование эмуляции перемещения C++11
- Создание некопируемого класса
- Создание некопируемого, но перемещаемого класса
- Использование алгоритмов C++14 и C++11
-
Глава 02: Управление ресурсами
- Управление указателями на классы, которые не покидают область видимости
- Подсчет указателей на классы
- Управление указателями на массивы, которые не покидают область видимости
- Подсчет указателей на массивы
- Хранение любых функциональных объектов в переменной
- Передача указателя на функцию
- Хранение любых лямбда-функций C++11 в переменной
- Контейнеры указателей
- Делайте это при выходе из области видимости!
- Инициализация базового класса членом класса-наследника
-
Глава 03: Преобразование и приведение
- Преобразование строк в числа
- Преобразование чисел в строки
- Преобразование чисел в числа
- Преобразование пользовательских типов в строки и из строк.
- Приведение умных указателей
- Приведение полиморфных объектов
- Синтаксический анализ (parsing) простого ввода
- Синтаксический анализ (parsing) сложного ввода
-
Глава 04: Уловки времени компиляции
- Проверка размеров во время компиляции
- Активация использования шаблона функции для интегральных типов
- Отключение использования шаблона функции для действительных типов
- Создание типа из числа
- Реализация свойства типов (type trait)
- Выбор оптимального оператора для параметра шаблона
- Получение типа выражения в C++03
-
Глава 05: Многопоточность
- Создание потока выполнения
- Синхронизация доступа к общему ресурсу
- Быстрый доступ к общему ресурсу с использованием атомарных операций
- Создание класса work_queue
- Блокировка «Несколько читателей – один писатель»
- Создание переменных, уникальных для каждого потока
- Прерывание потока
- Манипулирование группой потоков
- Безопасная инициализация общей переменной
- Захват нескольких мьютексов
-
Глава 06: Манипулирование задачами
- Регистрация задачи для обработки произвольного типа данных
- Создание таймеров и обработка событий таймера в качестве задач
- Передача данных по сети в качестве задачи
- Прием входящих соединений
- Параллельное выполнение различных задач.
- Конвейерная обработка задач
- Создание неблокирующего барьера
- Хранение исключения и создание задачи из него
- Получение и обработка системных сигналов в качестве задач
-
Глава 07: Манипулирование строками
- Смена регистра символов и сравнение без учета регистра
- Сопоставление строк с использованием регулярных выражений
- Поиск и замена строк с использованием регулярных выражений
- Форматирование строк с использованием безопасных printf-подобных функций
- Замена и стирание строк
- Представление строки двумя итераторами
- Использование типа «ссылка на строку»
-
Глава 08: Метапрограммирование
- Использование типа «вектор типов»
- Манипулирование вектором типов
- Получение результирующего типа функции во время компиляции
- Создание метафункции высшего порядка
- Ленивое вычисление метафункции
- Преобразование всех элементов кортежа в строки
- Расщепление кортежей
- Манипулирование гетерогенными контейнерами в C++14
-
Глава 09: Контейнеры
- Хранение нескольких элементов в контейнере
- Хранение не более N элементов в контейнере
- Сверхбыстрое сравнение строк
- Использование неупорядоченных ассоциативных контейнеров
- Создание ассоциативного контейнера с индексированием и по значениям
- Использование многоиндексных контейнеров
- Получение преимуществ от односвязного списка и пула памяти
- Использование плоских ассоциативных контейнеров
-
Глава 10: Сбор информации о платформе и компиляторе
- Обнаружение ОС и компилятора
- Обнаружение поддержки 128-битных целых чисел
- Обнаружение и обход отключенной динамической идентификации типа данных (RTTI)
- Написание метафункций с использованием более простых методов
- Уменьшение размера кода и повышение производительности пользовательских типов в C++11
- Переносимый способ экспорта и импорта функций и классов (часть 1, часть 2, часть 3)
- Обнаружение версии Boost и получение новейших функций
-
Глава 11: Работа с системой
- Перечисление файлов в каталоге
- Стирание и создание файлов и каталогов
- Написание и использование плагинов (часть 1, часть 2, часть 3)
- Получение backtrace – текущей последовательности вызовов
- Быстрая передача данных из одного процесса в другой
- Синхронизация межпроцессного взаимодействия
- Использование указателей в общей памяти
- Самый быстрый способ чтения файлов
- Сопрограммы – сохранение состояния и откладывание выполнения
-
Глава 12: Касаясь верхушки айсберга
- Работа с графами
- Визуализация графов
- Использование генератора истинно случайных чисел
- Использование переносных математических функций
- Написание тестовых случаев
- Объединение нескольких тестовых случаев в одном тестовом модуле (часть 1, часть 2, часть 3, часть 4, часть 5)
- Манипулирование изображениями
Рецепт
Рецепт: Получение параметров конфигурации
Собрать и Запустить
Аргументы для запуска программы:
Команда сборки:
Вывод:
Ожидайте...
Исходники (можно редактировать):
В книге вы дополнительно найдёте: мотивацию к приммеру, детальное его разъяснение, заметки о производительности, комментарии на русском, сравнение с C++11/C++14/C++17/C++20 и другие сочности.
О книге
Привет, меня зовут Антон Полухин и я автор таких библиотек Boost как TypeIndex, DLL и Stacktrace; так же я занимаюсь поддержкой множества библиотек Boost.
Все примеры с этого сайта объяснены в книге "Разработка приложений на C++ с использованием Boost". Все исходники доступны на GitHub.
Надеюсь, что вам этот сайт будет полезен. Компилируйте Boost примеры онлайн, модифицируйте исходники, тестируйте и игратесь в своё удовольствие с Boost.
Благодарности
- Все кто участвует в разработке библиотек Boost. Без них не было бы ни прекрасного Boost, ни книги, ни моего любимого хобби.
- Прекрасные люди из Coliru, которые позволяют людям делать онлайн сборки.