C++17 STL. Стандартная библиотека шаблонов, Галовиц Я.

599 грн.

Артикул: pit194 Категория: Метка:

Описание

Здесь можно купить: C++17 STL. Стандартная библиотека шаблонов, Галовиц Я. книга

Издательство — Питер

Язык — русский

Обложка — Мягкая обложка

Год издания — 2019

Количество страниц — 432

ISBN — 978-5-4461-0680-6

Бумага — белая, офсетная

О книге C++17 STL. Стандартная библиотека шаблонов, Галовиц Я.

С++ — объектно-ориентированный язык программирования, без которого сегодня немыслима промышленная разработка ПО. В этой замечательной книге описана работа с контейнерами, алгоритмами, вспомогательными классами, лямбда-выражениями и другими интересными инструментами, которыми богат современный С++. Освоив материал, вы сможете коренным образом пересмотреть привычный подход к программированию.Преимущество издания — в подробном описании стандартной библиотеки шаблонов С++, STL. Ее свежая версия была выпущена в 2017 году. В книге вы найдете более 90 максимально реалистичных примеров, которые демонстрируют всю мощь STL. Многие из них станут базовыми кирпичиками для решения более универсальных задач.Вооружившись этой книгой, вы сможете эффективно использовать С++17 для создания высококачественного и высокопроизводительного ПО, применимого в различных отраслях.

C++17 STL. Стандартная библиотека шаблонов, Галовиц Я. оглавление

Предисловие

Темы, рассмотренные в этой книге

Что вам нужно для работы с книгой

Для кого предназначено издание

Разделы

Условные обозначения

Загрузка примеров кода

Глава 1. Новые возможности С++17

Введение

Применяем структурированные привязки (декомпозицию)

для распаковки набора возвращаемых значений

Ограничиваем область видимости переменных в выражениях if и switch

Новые правила инициализатора с фигурными скобками

Разрешаем конструктору автоматически выводить полученный

тип класса шаблона

Упрощаем принятие решений во время компиляции с помощью constexpr-if

Подключаем библиотеки с помощью встраиваемых переменных

Реализуем вспомогательные функции с помощью выражений свертки

Глава 2. Контейнеры STL

Введение

Используем идиому erase-remove для контейнера std::vector

7Удаляем элементы из неотсортированного объекта класса std::vector

за время O(1)

Получаем доступ к экземплярам класса std::vector быстрым или безопасным способом

Сохраняем сортировку экземпляров класса std::vector

Вставляем элементы в контейнер std::map эффективно и в соответствии с условиями

Исследуем новую семантику подсказок для вставки элементов с помощью метода std::map::insert

Эффективно изменяем ключи элементов std::map

Применяем контейнер std::unordered_map для пользовательских типов

Отсеиваем повторяющиеся слова из пользовательского ввода

и выводим их на экран в алфавитном порядке с помощью контейнера std::set

Реализуем простой ОПН-калькулятор с использованием контейнера std::stack

Подсчитываем частоту встречаемости слов с применением

контейнера std::map

Вспомогательный стилистический редактор для поиска длинных

предложений в текстах с помощью std::multimap

Реализуем личный список текущих дел с помощью std::priority_queue

Глава 3. Итераторы

Введение

Создаем собственный итерабельный диапазон данных

Обеспечиваем совместимость собственных итераторов с категориями итераторов STL

Используем оболочки итераторов для заполнения обобщенных

структур данных

Реализуем алгоритмы с помощью итераторов

Перебор в обратную сторону с применением обратных адаптеров

для итераторов

Завершение перебора диапазонов данных с использованием

ограничителей

Автоматическая проверка кода итераторов с помощью

проверяемых итераторов

Создаем собственный адаптер для итераторов-упаковщиков

8

Глава 4. Лямбда-выражения

Введение

Динамическое определение функций с помощью лямбда-выражений

Добавляем полиморфизм путем оборачивания лямбда-выражений

в std::function

Создаем функции методом конкатенации

Создаем сложные предикаты с помощью логической конъюнкции

Вызываем несколько функций с одинаковыми входными данными

Реализуем функцию transform_if с применением std::accumulate

и лямбда-выражений

Генерируем декартово произведение на основе любых входных данных

во время компиляции

Глава 5. Основы работы с алгоритмами STL

Введение

Копируем элементы из одних контейнеров в другие

Сортируем контейнеры

Удаляем конкретные элементы из контейнеров

Преобразуем содержимое контейнеров

Выполняем поиск элементов в упорядоченных и неупорядоченных векторах

Ограничиваем допустимые значения вектора конкретным численным

диапазоном с помощью std::clamp

Находим шаблоны в строках с помощью функции std::search и выбираем оптимальную реализацию

Делаем выборку данных из крупных векторов

Выполняем перестановки во входных последовательностях

Инструмент для слияния словарей

Глава 6. Сложные случаи использования алгоритмов STL

Введение

Реализуем класс префиксного дерева с использованием алгоритмов STL

Создаем генератор поисковых подсказок с помощью

префиксных деревьев

Реализуем формулу преобразования Фурье с применением численных алгоритмов STL

9Определяем ошибку суммы двух векторов

Реализуем отрисовщик множества Мандельброта в ASCII

Создаем собственный алгоритм split

Создаем полезные алгоритмы на основе стандартных алгоритмов gather

Удаляем лишние пробелы между словами

Компрессия и декомпрессия строк

Глава 7. Строки, классы потоков и регулярные выражения

Введение

Создание, конкатенация и преобразование строк

Удаляем пробелы из начала и конца строк

Преимущества использования std::string без затрат

на создание объектов std::string

Считываем значения из пользовательского ввода

Подсчитываем все слова в файле

Форматируем ваши выходные данные с помощью манипуляторов

потока ввода-вывода

Инициализируем сложные объекты из файла вывода

Заполняем контейнеры с применением итераторов std::istream

Выводим любые данные на экран с помощью итераторов std::ostream

Перенаправляем выходные данные в файл для конкретных разделов кода

Создаем пользовательские строковые классы путем

наследования std::char_traits

Токенизация входных данных с помощью библиотеки для работы

с регулярными выражениями

Удобный и красивый динамический вывод чисел на экран в зависимости

от контекста

Перехватываем читабельные исключения для ошибок потока std::iostream

Глава 8. Вспомогательные классы

Введение

Преобразуем единицы измерения времени с помощью std::ratio

Выполняем преобразование между абсолютными и относительными

значениями с использованием std::chrono

Безопасно извещаем о сбое с помощью std::optional

10

Применяем функции для кортежей

Быстрое создание структур данных с помощью 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

11Глава 10. Файловая система

Введение

Реализуем нормализатор пути файла

Получаем канонические пути к файлам из относительных путей

Составляем список всех файлов в каталоге

Инструмент текстового поиска в стиле grep

Инструмент для автоматического переименования файлов

Создаем индикатор эксплуатации диска

Подбиваем статистику о типах файлов

Инструмент для уменьшения размера папки путем замены дубликатов

символьными ссылками

Об авторе

О рецензенте

Также вы можете оставить вопрос или отзыв о книге: C++17 STL. Стандартная библиотека шаблонов, Галовиц Я.

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “C++17 STL. Стандартная библиотека шаблонов, Галовиц Я.”

Ваш e-mail не будет опубликован. Обязательные поля помечены *