Litvek: лучшие книги недели
Топ книга - Исчезновение венериан [Ли Дуглас Брэкетт] - читаем полностью в LitvekТоп книга - Легкий способ бросить пить [Аллен Карр] - читаем полностью в LitvekТоп книга - Пространство вариантов [Вадим Зеланд] - читаем полностью в LitvekТоп книга - Знамение пути [Мария Васильевна Семенова] - читаем полностью в LitvekТоп книга - Есть, молиться, любить [Элизабет Гилберт] - читаем полностью в LitvekТоп книга - Время всегда хорошее [Андрей Валентинович Жвалевский] - читаем полностью в LitvekТоп книга - В канун Рождества [Розамунда Пилчер] - читаем полностью в LitvekТоп книга - Подстрочник: Жизнь Лилианны Лунгиной, рассказанная ею в фильме Олега Дормана [Олег Вениаминович Дорман] - читаем полностью в Litvek
Litvek - онлайн библиотека >> Яцек Галовиц >> Базы данных >> C++17 STL Стандартная библиотека шаблонов

Яцек Галовиц 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. Параллелизм и конкурентность

 Введение

 Автоматическое распараллеливание кода, использующего стандартные алгоритмы

 Приостанавливаем программу на конкретный промежуток времени

 Запускаем и