📚 Hub Books: Онлайн-чтение книгРазная литератураC++17 STL Стандартная библиотека шаблонов - Яцек Галовиц

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

C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц - Читайте книги онлайн на Hub Books! Бесплатная библиотека с огромным выбором книг
Читать книгу
  • 0 голосов
  • Страниц: 121
  • Просмотров: 0
  • Возрастные ограничения: (18+) Внимание! Книга может содержать контент только для совершеннолетних.

Воспользуйтесь возможностью ознакомиться с электронной книгой C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц, однако, для полного чтения, мы рекомендуем приобрести лицензионную версию и уважить труд авторов!

Краткое представление о книге

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

Шрифт:

-
+

Интервал:

-
+
1 2 3 4 5 6 7 8 9 10 ... 121
Перейти на страницу:

Яцек Галовиц

C++17 STL Стандартная библиотека шаблонов

Оглавление

Предисловие

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

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

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

 Разделы

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

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

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

 Введение

 Применяем структурированные привязки (декомпозицию) для распаковки набора возвращаемых значений

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

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

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

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

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

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

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

 Введение

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

 Удаляем элементы из неотсортированного объекта класса 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

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

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

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

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

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

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

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

 Введение

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

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

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

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

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

 Реализуем функцию transform_if с применением std::accumulate и лямбда-выражений

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

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

 Введение

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

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

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

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

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

 Ограничиваем допустимые значения вектора конкретным численным диапазоном с помощью std::clamp

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

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

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

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

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

 Введение

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

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

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

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

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

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

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

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

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

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

 Введение

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

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

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

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

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

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

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

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

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

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

 Создаем пользовательские строковые классы путем наследования std::char_traits

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

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

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

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

 Введение

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

 Выполняем преобразование между абсолютными и относительными значениями с использованием 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

 Избегаем

1 2 3 4 5 6 7 8 9 10 ... 121
Перейти на страницу:

Комментарии

Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?