Осваиваем C++17 STL
Здесь можно купить книгу "Осваиваем C++17 STL " в печатном или электронном виде. Также, Вы можете прочесть аннотацию, цитаты и содержание, ознакомиться и оставить отзывы (комментарии) об этой книге.
Место издания: Москва
ISBN: 978-5-97060-663-6
Страниц: 352
Артикул: 95522
Возрастная маркировка: 16+
Краткая аннотация книги "Осваиваем C++17 STL"
Стандарт C++17, которому посвящена книга, удвоил объем библиотеки в сравнении с С++11. Вы узнаете о наиболее важных особенностях стандартной библиотеки C++17 со множеством примеров, научитесь создавать свои типы итераторов, диспетчеры памяти, пулы потоков выполнения. Также рассмотрены отличия мономорфизма, полиморфизма и обобщенных алгоритмов. Издание адресовано разработчикам, желающим овладеть новыми особенностями библиотеки C++17 STL и в полной мере использовать ее компоненты. Знакомство с языком C++ является обязательным условием.
Содержание книги "Осваиваем C++17 STL "
Предисловие от разработчиков С++ в России и Беларуси
Об авторе
О научном редакторе
Предисловие
Содержание книги
Что потребуется для работы с книгой
Кому адресована эта книга
Типографские соглашения
Отзывы и пожелания
Скачивание исходного кода примеров
Список опечаток
Нарушение авторских прав
Глава 1. Классический полиморфизм и обобщенное программирование
Конкретные мономорфные функции
Классические полиморфные функции
Обобщенное программирование с шаблонами
Итоги
Глава 2. Итераторы и диапазоны
Проблема целочисленных индексов
За границами указателей
Константные итераторы
Пара итераторов определяет диапазон
Категории итераторов
Итераторы ввода и вывода
Объединяем все вместе
Устаревший std::iterator
Итоги
Глава 3. Алгоритмы с парами итераторов
Замечание о заголовках
Диапазонные алгоритмы только для чтения
Манипулирование данными с std::copy
Вариации на тему: std::move и std::move_iterator
Непростое копирование с std::transform
Диапазонные алгоритмы только для записи
Алгоритмы, влияющие на жизненный цикл объектов
Наш первый перестановочный алгоритм: std::sort
Обмен местами, обратное упорядочение и разделение
Ротация и перестановка
Кучи и пирамидальная сортировка
Слияние и сортировка слиянием
Поиск и вставка в сортированный массив с std::lower_bound
Удаление из сортированного массива с std::remove_if
Итоги
Глава 4. Зоопарк контейнеров
Понятие владения
Простейший контейнер: std::array
Рабочая лошадка: std::vector
Изменение размера std::vector
Вставка и стирание в std::vector
Ловушки vector
Ловушки в конструкторах перемещения без noexcept
Быстрый гибрид: std::deque
Особый набор возможностей: std::list
Какие отличительные особенности имеет std::list?
Список без удобств std::forward_list
Абстракции с использованием std::stack
Удобный адаптер: std::priority_queue
Деревья: std::set
Замечание о прозрачных компараторах
Необычные std::multiset
Перемещение элементов без перемещения
Хеши: std::unordered_set
Фактор загрузки и списки в корзинах
Откуда берется память?
Итоги
Глава 5. Словарные типы
История std::string
Маркировка ссылочных типов с reference_wrapper
C++11 и алгебраические типы
Работа с std::tuple
Манипулирование значениями кортежа
Замечание об именованных классах
Выражение альтернатив с помощью std::variant
Чтение вариантов
О make_variant и семантике типа-значения
Задержка инициализации с помощью std::optional
И снова variant
Бесконечное число альтернатив с std::any
std::any и полиморфные типы
Коротко о стирании типа
std::any и копирование
И снова о стирании типов: std::function
std::function, копирование и размещение в динамической памяти
Итоги
Глава 6. Умные указатели
История появления умных указателей
Умные указатели никогда ничего не забывают
Автоматическое управление памятью с std::unique_ptr
Почему в C++ нет ключевого слова finally
Настройка обратного вызова удаления
Управление массивами с помощью std::unique_ptr
Подсчет ссылок с std::shared_ptr
Не допускайте двойного управления!
Удерживание обнуляемых дескрипторов с помощью weak_ptr
Сообщение информации о себе с std::enable_shared_from_this
Странно рекурсивный шаблон проектирования
Заключительное замечание
Обозначение неисключительности с observer_ptr
Итоги
Глава 7. Конкуренция
Проблемы с volatile
Использование std::atomic
Атомарное выполнение сложных операций
Большие атомарные типы
Поочередное выполнение с std::mutex
Правильный порядок «приобретения блокировок»
Всегда связывайте мьютекс с управляемыми данными
Специальные типы мьютексов
Повышение статуса блокировки для чтения/записи
Понижение статуса блокировки для чтения/записи
Ожидание условия
Обещания о будущем
Подготовка заданий для отложенного выполнения
Будущее механизма future
Поговорим о потоках
Идентификация отдельных потоков и текущего потока
Исчерпание потоков и std::async
Создание своего пула потоков
Оптимизация производительности пула потоков
Итоги
Глава 8. Диспетчеры памяти
Диспетчер памяти обслуживает ресурс памяти
Еще раз об интерфейсах и понятиях
Определение кучи с помощью memory_resource
Использование стандартных ресурсов памяти
Выделение из ресурса пулов
500-головый стандартный диспетчер памяти
Метаданные, сопровождающие причудливые указатели
Прикрепление контейнера к единственному ресурсу памяти
Использование диспетчеров памяти стандартных типов
Настройка ресурса памяти по умолчанию
Создание контейнера с поддержкой выбора диспетчера памяти
Передача вниз с scoped_allocator_adaptor
Передача разных диспетчеров памяти
Итоги
Глава 9. Потоки ввода/вывода
Проблемы ввода/вывода в C++
Буферизация и форматирование
POSIX API
Стандартный C API
Буферизация в стандартном C API
Форматирование с помощью printf и snprintf
Классическая иерархия потоков ввода/вывода
Потоки данных и манипуляторы
Потоки данных и обертки
Решение проблемы манипуляторов
Форматирование с ostringstream
Примечание о региональных настройках
Преобразование чисел в строки
Преобразование строк в числа
Чтение по одной строке или по одному слову
Итоги
Глава 10. Регулярные выражения
Что такое регулярное выражение?
Замечание об экранировании обратными слешами
Воплощение регулярных выражений в объектах std::regex
Сопоставление и поиск
Извлечение совпадений с подвыражениями
Преобразование совпадений в значения данных
Итерации по нескольким совпадениям
Использование регулярных выражений для замены строк
Грамматика регулярных выражений ECMAScript
Непоглощающие конструкции
Малопонятные особенности и ловушки ECMAScript
Итоги
Глава 11. Случайные числа
Случайные и псевдослучайные числа
Проблема функции rand()
Решение проблем с
Генераторы
Истинно случайные биты и std::random_device
Псевдослучайные биты с std::mt19937
Фильтрация вывода генераторов с помощью адаптеров
Распределения
Имитация броска игровой кости с uniform_int_distribution
Генерирование выборок с normal_distribution
Взвешенный выбор с discrete_distribution
Перемешивание карт с std::shuffle
Итоги
Глава 12. Файловая система
Примечание о пространствах имен
Очень длинное примечание об уведомлениях об ошибках
Использование
Коды ошибок и условия ошибок
Возбуждение ошибок с std::system_error
Файловые системы и пути
Представление путей в C++
Операции с путями
Получение информации о файлах с directory_entry
Обход каталогов с directory_iterator
Рекурсивный обход каталогов
Изменение файловой системы
Получение информации о диске
Итоги
Предметный указатель
Все отзывы о книге Осваиваем C++17 STL
Внимание!
При обнаружении неточностей или ошибок в описании книги "Осваиваем C++17 STL (автор Артур О’Двайр)", просим Вас отправить сообщение на почту help@directmedia.ru. Благодарим!
и мы свяжемся с вами в течение 15 минут
за оставленную заявку