Выполняем преобразование между абсолютными и относительными значениями с использованием std::chrono
Безопасно извещаем о сбое с помощью std::optional
Применяем функции для кортежей
Быстрое создание структур данных с помощью std::tuple
Замена void* с использованием std::any для повышения безопасности типов
Хранение разных типов с применением std::variant
Автоматическое управление ресурсами с помощью std::unique_ptr
Автоматическое управление разделяемой памятью кучи с использованием std::shared_ptr
Работаем со слабыми указателями на разделяемые объекты
Упрощаем управление ресурсами устаревших API с применением умных указателей
Открываем доступ к разным переменным — членам одного объекта
Генерируем случайные числа и выбираем правильный генератор случайных чисел
Генерируем случайные числа и создаем конкретные распределения с помощью STL
Глава 9. Параллелизм и конкурентность
Автоматическое распараллеливание кода, использующего стандартные алгоритмы
Приостанавливаем программу на конкретный промежуток времени
Запускаем и приостанавливаем потоки
Выполняем устойчивую к исключениям общую блокировку с помощью std::unique_lock и std::shared_lock
Избегаем взаимных блокировок с применением std::scoped_lock
Синхронизация конкурентного использования std::cout
Безопасно откладываем инициализацию с помощью std::call_once
Отправляем выполнение задач в фоновый режим с применением std::async
Реализуем идиому «производитель/потребитель» с использованием std::condition_variable
Реализуем идиому «несколько производителей/потребителей» с помощью std::condition_variable
Распараллеливание отрисовщика множества Мандельброта в ASCII с применением std::async
Небольшая автоматическая библиотека для распараллеливания с использованием std::future
Реализуем нормализатор пути файла
Получаем канонические пути к файлам из относительных путей
Составляем список всех файлов в каталоге
Инструмент текстового поиска в стиле grep
Инструмент для автоматического переименования файлов
Создаем индикатор эксплуатации диска
Подбиваем статистику о типах файлов
Инструмент для уменьшения размера папки путем замены дубликатов символьными ссылками
Предисловие
Книга по C++, которую вы держите в руках, научит вас максимально эффективно использовать C++17. В ней представлены примеры написания кода, основанные на языке С++ и его стандартной библиотеке шаблонов (Standard Template Library, STL). Поскольку в рассматриваемых здесь примерах STL применяется по максимуму, об этой библиотеке стоит сказать подробнее.