Библиотека программиста - Дейтел Пол, Дейтел Харви - C++20 for Programmers / C++20 для программистов [2024, PDF, RUS]

Ответить на тему Главная » Литература » Книги FB2 » Учебно-техническая литература
Статистика раздачи
Размер:  12.05 MB   |    Зарегистрирован:  6 месяца 4 дня   |    Скачано:  19 раза
Работает мультитрекерная раздача

Полного источника не было: Никогда

 
Автор Сообщение

MAGNAT ®

Пол: Мужской

Стаж: 10 месяца 30 дня

Сообщений: 28494

Откуда: RU

Наличие запрета: Нету запретов


Награды: 16 (Подробнее)

Активный сидер 5 (Количество: 1) Admin (Количество: 1) Мега релизер (Количество: 1) Активный сидер 2 (Количество: 1) Супер мега сидер (Количество: 1)
Вне форума [Профиль] [ЛС]

Создавать темы 01-Июн-2025 12:54 | #1 · Автор

[Код]

C++20 for Programmers / C++20 для программистов
Год издания: 2024
Автор: Дейтел Пол, Дейтел Харви
Жанр или тематика: Программирование
Издательство: Питер
ISBN: 978-5-4461-2359-9
Серия: Библиотека программиста
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 1056
Описание: Программисты с опытом работы на других языках высокого уровня смогут на практике освоить современный С++ и «большую четверку» его новых возможностей: диапазоны, концепты, модули и корутины.
200+ практических примеров реального исходного кода позволят быстро овладеть идиомами современного С++, используя популярные компиляторы: Visual C++®, GNU® g++, Apple® Xcode® и LLVM®/Clang. Знание базы позволит перейти к контейнерам стандартной библиотеки С++ array и vector; функциональному программированию с диапазонами и представлениями C++20; строкам, файлам и регулярным выражениям; объектно-ориентированному программированию с классами, наследованием, динамическим и статическим полиморфизмом; перегрузке операторов, семантике копирования и перемещения, RAII и умным указателям; исключениям и ожидаемым в С++23 контрактам; контейнерам, итераторам и алгоритмам стандартной библиотеки; шаблонам, концептам С++20 и метапрограммированию; модулям С++ 20 и технологии разработки больших программ; конкурентности, параллелизму, параллельным алгоритмам стандартной библиотеки С++17 и С++20 и корутинам С++20.

Примеры страниц (скриншоты)

Оглавление

Оглавление
Предисловие — 24
Современный C++ — 24
В курсе событий — 25
Кому пригодится эта книга — 25
Готовые файлы с исходным кодом программ — 25
Три профессиональных компилятора на выбор — 26
Учебный метод готовых объектов — 26
Что такое готовые объекты? — 27
Бесплатные классы — 27
Проект Boost — 27
Примеры кода с готовыми объектами — 28
Краткое содержание книги — 28
Часть 1. Быстрый старт и базовые возможности C++ — 29
Часть 2. Массивы, указатели и строки — 30
Часть 3. Объектно-ориентированное программирование — 31
Часть 4. Контейнеры, итераторы и алгоритмы стандартной библиотеки — 33
Часть 5. Более сложные темы — 34
Приложения — 35
Дополнительные материалы на сайте deitel.com — 35
C++ Core Guidelines — 36
Библиотека Guidelines Support Library (GSL) — 36
Профессиональные статические анализаторы кода — 37
Интернет-ресурсы для программистов — 37
Stack Overflow — 37
GitHub — 38
Docker — 39
Некоторые ключевые документы и ресурсы по C++ — 39
Документация — 40
Блоги — 40
Дополнительные ресурсы — 41
Сайты, где ответят на ваши вопросы — 41
Общение с авторами — 41
Благодарности — 41
Рецензенты — 42
Артур О’Двайр — 43
GitHub — 43
Мэтт Годболт и Compiler Explorer — 43
Дитмар Куль — 44
Райнер Гримм — 44
Брайан Гетц — 44
Разработчики программ с открытым исходным кодом и блогеры — 44
Поисковая система Google — 45
Grammarly — 45
Об авторах — 46
От издательства — 47
Перед началом работы — 48
Условные обозначения — 48
Загрузка примеров кода — 48
Компиляторы, на которых мы тестировали исходный код — 49
Не все примеры кода совместимы со всеми тремя компиляторами — 49
Установка Visual Studio Community Edition в Windows — 50
Установка Xcode в macOS — 50
Установка актуальной версии GNU C++ — 50
Установка GNU Compiler Collection в Ubuntu Linux, запущенной в подсистеме Windows для Linux — 51
Docker и контейнеры Docker — 52
Установка Docker — 52
Загрузка контейнера Docker, содержащего GNU Compiler Collection — 52
Загрузка контейнера Docker, содержащего Clang — 53
Ответы на ваши вопросы по C++ — 53
Онлайн-документация по C++ — 54
О библиотеке форматирования текста {fmt} — 54
Средства статического анализа кода — 54
Глава 1. Введение и тест-драйв популярных бесплатных компиляторов C++ — 56
1.1. Введение — 57
1.2. Тест-драйв: компиляция приложения, написанного на C++20 — 58
1.2.1. Компиляция и запуск приложения в Windows с помощью Visual Studio 2022 — 59
1.2.2. Компиляция и запуск приложения в macOS с помощью Xcode — 63
1.2.3. Компиляция и запуск приложения в Linux с помощью g++ — 67
1.2.4. Компиляция и запуск приложения в контейнере Docker с помощью g++ — 70
1.2.5. Компиляция и запуск приложения в контейнере Docker с помощью clang++...71
1.3. Закон Мура, многоядерные процессоры и многопоточное программирование — 73
1.4. Что такое объектно-ориентированное программирование? — 75
1.5. Итоги — 78
Глава 2. Азы программирования на C++ — 79
2.1. Введение — 80
2.2. Первая программа на C++: вывод текста на экран — 80
2.3. Модификация нашей первой программы на C++ — 85
2.4. Вторая программа на C++: сложение целых чисел — 86
2.5. Арифметические операторы — 90
2.6. Принятие решений: операторы равенства и сравнения — 92
2.7. Готовые объекты: создание и использование объектов класса string стандартной библиотеки — 96
2.8. Итоги — 100
Глава 3. Управляющие инструкции (часть 1) — 101
3.1. Введение — 102
3.2. Управляющие структуры — 102
3.2.1. Последовательность — 103
3.2.2. Инструкции выбора — 104
3.2.3. Инструкции цикла — 104
3.2.4. Комбинации управляющих инструкций — 105
3.3. Инструкция одиночного выбора if — 106
3.4. Инструкция двойного выбора if...else — 107
3.4.1. Вложенные инструкции if...else — 108
3.4.2. Блоки — 109
3.4.3. Тернарный условный оператор ?: — 110
3.5. Инструкция цикла while — 110
3.6. Цикл со счетчиком — 111
3.6.1. Реализация цикла со счетчиком — 112
3.6.2. Целочисленное деление с усечением — 113
3.7. Цикл с контрольным значением — 114
3.7.1. Реализация цикла с контрольным значением — 114
3.7.2. Явное и неявное преобразование основных типов данных — 117
3.7.3. Форматирование чисел с плавающей точкой — 118
3.8. Вложенные управляющие инструкции — 119
3.8.1. Постановка задачи — 119
3.8.2. Реализация программы — 120
3.8.3. Предотвращение сужающих преобразований с помощью скобочной инициализации — 122
3.9. Составные операторы присваивания — 123
3.10. Операторы инкремента и декремента — 123
3.11. Несовместимость основных типов данных на разных платформах — 127
3.12. Готовые объекты: работа с целыми числами произвольной величины — 127
3.13. Форматирование текста функцией format — 133
3.14. Итоги — 135
Глава 4. Управляющие инструкции (часть 2) — 137
4.1. Введение — 138
4.2. Как работает цикл со счетчиком — 138
4.3. Инструкция цикла for — 139
4.4. Инкремент и декремент счетчика в цикле for — 142
4.5. Программа для вычисления суммы четных чисел — 143
4.6. Программа для расчета сложных процентов — 144
4.7. Инструкция цикла do...while — 148
4.8. Инструкция множественного выбора switch — 150
4.9. Инструкции выбора с инициализаторами — 156
4.10. Инструкции break и continue — 157
4.11. Логические операторы — 159
4.11.1. Оператор && (логическое И) — 159
4.11.2. Оператор || (логическое ИЛИ) — 160
4.11.3. Вычисление по короткой схеме — 161
4.11.4. Оператор ! (логическое НЕ) — 162
4.11.5. Программное создание таблиц истинности для логических операторов — 162
4.12. Типичные ошибки при работе с операторами равенства (==) и присваивания (=) — 164
4.13. Готовые объекты: создание и чтение ZIP-файлов — 166
4.14. Форматирование текста с указанием ширины полей и точности — 171
4.15. Итоги — 174
Глава 5. Функции и шаблоны функций — 175
5.1. Введение — 176
5.2. Функции и классы — основные компоненты программ — 176
5.3. Функции математической библиотеки — 177
5.4. Определения функций и прототипы функций — 180
5.5. Порядок вычисления аргументов функции — 183
5.6. Дополнительные сведения о прототипах функций и принудительном приведении аргументов — 184
5.6.1. Сигнатуры функций и прототипы функций — 184
5.6.2. Принудительное приведение аргументов — 184
5.6.3. Правила продвижения аргументов и неявные преобразования — 185
5.7. Заголовки стандартной библиотеки C++ — 187
5.8. Генерация случайных чисел — 190
5.8.1. Бросаем игровой кубик — 191
5.8.2. Бросаем кубик 60 миллионов раз — 192
5.8.3. Инициализация генератора случайных чисел — 194
5.8.4. Инициализация генератора случайных чисел с помощью random_device — 195
5.9. Программа «Игра в кости» и знакомство с перечислениями — 196
5.10. Правила областей видимости — 202
5.11. Встроенные функции — 207
5.12. Ссылки и ссылочные параметры — 208
5.13. Аргументы по умолчанию — 212
5.14. Оператор разрешения области видимости — 214
5.15. Перегрузка функций — 214
5.16. Шаблоны функций — 218
5.17. Рекурсия — 221
5.18. Пример рекурсивных вычислений: числа Фибоначчи — 224
5.19. Рекурсия или итерация? — 228
5.20. Lnfylun Lhqtomh Wjtz Qarcv: Qjwazkrplm xzz Xndmwwqhlz — 230
5.21. Итоги — 234
Глава 6. Массивы, векторы, библиотека ranges и функциональное программирование — 235
6.1. Введение — 236
6.2. Массивы — 237
6.3. Объявление массива — 237
6.4. Инициализация массива в цикле — 238
6.5. Инициализация массива со списком инициализаторов — 241
6.6. Цикл for для диапазона значений (C++11) и цикл for для диапазона значений с инициализатором (C++20) — 242
6.7. Заполнение массива и спецификатор constexpr — 245
6.8. Суммирование элементов массива — 247
6.9. Визуализация данных массива на простой диаграмме — 248
6.10. Использование элементов массива в качестве счетчиков — 250
6.11. Использование массива для подсчета результатов опроса — 251
6.12. Сортировка массива и поиск в массиве — 252
6.13. Многомерные массивы — 255
6.14. Основы функционального программирования — 259
6.14.1. «Что» и «как» — 260
6.14.2. Передача функций в качестве аргументов другим функциям, основы лямбда-выражений — 261
6.14.3. Фильтрация, преобразование и свертка с библиотекой ranges (C++20) — 263
6.15. Готовые объекты: шаблон класса vector стандартной библиотеки C++ — 268
6.16. Итоги — 275
Глава 7. Указатели в современном C++ (фактор риска) — 277
7.1. Введение — 278
7.2. Объявление и инициализация указателей — 280
7.2.1. Объявление указателя — 280
7.2.2. Инициализация указателя — 280
7.2.3. Нулевые указатели до C++11 — 281
7.3. Операторы для работы с указателями — 281
7.3.1. Оператор взятия адреса (&) — 281
7.3.2. Оператор косвенного обращения (*) — 282
7.3.3. Использование операторов взятия адреса (&) и косвенного обращения (*) ... 283
7.4. Передача аргументов по указателю — 284
7.5. Традиционные массивы в стиле C — 286
7.5.1. Объявление традиционного массива и доступ к его элементам — 286
7.5.2. Инициализация традиционного массива — 289
7.5.3. Передача традиционного массива функции — 289
7.5.4. Объявление параметров функции, обрабатывающей традиционный массив — 289
7.5.5. Пример с функциями sort, begin и end стандартной библиотеки (C++11) — 290
7.5.6. Недостатки традиционных массивов — 290
7.6. Функция to_array (C++20), преобразующая традиционные массивы в std::array ... 291
7.7. Использование const с указателями и данными, на которые они указывают — 293
7.7.1. Неконстантный указатель на неконстантные данные — 293
7.7.2. Неконстантный указатель на константные данные — 293
7.7.3. Константный указатель на неконстантные данные — 294
7.7.4. Константный указатель на константные данные — 295
7.8. Оператор sizeof — 296
7.9. Выражения и арифметические операции с указателями — 299
7.9.1. Прибавление и вычитание целых чисел — 300
7.9.2. Вычитание одного указателя из другого — 301
7.9.3. Присваивание указателя — 301
7.9.4. Невозможность разыменования указателя void* — 302
7.9.5. Сравнение указателей — 302
7.10. Готовые объекты: доступ к контейнерам через span (C++20) — 302
7.11. Строки на основе указателей — 309
7.11.1. Аргументы командной строки — 310
7.11.2. Еще одна возможность функции to_array (C++20) — 312
7.12. Другие темы, связанные с указателями — 313
7.13. Итоги — 314
Глава 8. Строки и их представления, текстовые файлы, CSV-файлы и регулярные выражения — 315
8.1. Введение — 316
8.2. Присваивание и конкатенация строк — 317
8.3. Сравнение строк — 319
8.4. Создание подстроки — 321
8.5. Обмен значениями двух строк — 321
8.6. Получение характеристик строки — 322
8.7. Поиск подстрок и символов в строке — 325
8.8. Замена и удаление символов в строке — 327
8.9. Вставка символов в строку — 329
8.10. Преобразования между числами и строками (C++11) — 330
8.11. Представления string_view (C++17) — 332
8.12. Файлы и потоки — 335
8.13. Создание файла с последовательным доступом — 336
8.14. Чтение данных из файла с последовательным доступом — 340
8.15. Чтение и запись текста в кавычках (C++14) — 342
8.16. Обновление данных в файле с последовательным доступом — 344
8.17. Обработка строковых потоков — 344
8.18. Необработанные строковые литералы — 347
8.19. Готовые объекты: чтение и анализ CSV-файла с данными о катастрофе «Титаника» — 348
8.19.1. Чтение CSV-файла с помощью библиотеки rapidcsv — 349
8.19.2. Работа с набором данных «Титаник» — 351
8.20. Готовые объекты: основы регулярных выражений — 359
8.20.1. Сравнение целых строк с шаблонами — 361
8.20.2. Замена подстрок — 365
8.20.3. Поиск в тексте по шаблонам — 366
8.21. Итоги — 369
Глава 9. Пользовательские классы — 370
9.1. Введение — 371
9.2. Тест-драйв объекта пользовательского класса Account — 371
9.3. Класс Account с элементом данных, set-функцией и get-функцией — 373
9.3.1. Определение класса — 373
9.3.2. Спецификаторы доступа private и public — 376
9.4. Конструктор класса Account — 377
9.5. Разработка программ с set-функциями и get-функциями — 381
9.6. Добавление «денежной» переменной в класс Account — 383
9.7. Отделение интерфейса от реализации на примере класса Time — 386
9.7.1. Интерфейс класса — 388
9.7.2. Отделение интерфейса класса от реализации класса — 388
9.7.3. Определение класса — 389
9.7.4. Функции класса Time — 390
9.7.5. Включение заголовка класса в файл исходного кода — 391
9.7.6. Оператор разрешения области видимости (::) — 391
9.7.7. Функция setTime и исключения — 392
9.7.8. Функции to24HourString и to12HourString — 392
9.7.9. Неявное встраивание функций — 393
9.7.10. Функции класса в сравнении с глобальными функциями — 393
9.7.11. Использование класса Time — 393
9.7.12. Размер объекта — 395
9.8. Процесс компиляции и компоновки программы — 395
9.9. Область видимости класса и доступ к элементам класса — 397
9.10. Функции доступа и служебные функции — 398
9.11. Конструкторы с аргументами по умолчанию — 398
9.11.1. Усовершенствованный класс Time — 398
9.11.2. Перегрузка конструкторов и делегирование конструкторов (C++11) — 404
9.12. Деструкторы — 405
9.13. Вызов конструкторов и деструкторов — 405
9.14. Коварная ловушка: возврат ссылки или указателя на скрытый элемент данных... 409
9.15. Оператор присваивания по умолчанию — 412
9.16. Константные объекты и константные функции класса — 414
9.17. Композиция: объекты как элементы классов — 416
9.18. Дружественные функции и классы — 421
9.19. Указатель this — 423
9.19.1. Неявное и явное использование указателя this для доступа к элементам данных объекта — 424
9.19.2. Использование указателя this для каскадного вызова функций — 425
9.20. Статические элементы класса: данные и функции, общие для всех объектов класса — 429
9.21. Агрегаты — 434
9.21.1. Инициализация агрегата — 435
9.21.2. Назначенные инициализаторы (C++20) — 435
9.22. Готовые объекты: сериализация в формате JSON — 436
9.22.1. Сериализация вектора объектов, содержащего открытые данные — 438
9.22.2. Сериализация вектора объектов, содержащего скрытые данные — 442
9.23. Итоги — 444
Глава 10. ООП: наследование и динамический полиморфизм — 446
10.1. Введение — 447
10.2. Базовые и производные классы — 450
10.2.1. Иерархия класса CommunityMember — 450
10.2.2. Иерархия класса Shape и открытое наследование — 451
10.3. Взаимосвязь между базовым и производным классами — 453
10.3.1. Объявление и использование класса SalariedEmployee — 453
10.3.2. Создание иерархии наследования: SalariedEmployee и SalariedCommissionEmployee — 456
10.4. Конструкторы и деструкторы в производных классах — 462
10.5. Принцип динамического полиморфизма на примере объектов в видеоигре — 463
10.6. Отношения между объектами в иерархии наследования — 464
10.6.1. Вызов функций базового класса из объектов производного класса — 465
10.6.2. Направление указателя производного класса на объект базового класса — 468
10.6.3. Вызовы функций производного класса через указатель базового класса — 469
10.7. Виртуальные функции и виртуальные деструкторы — 470
10.7.1. Зачем нужны виртуальные функции — 470
10.7.2. Объявление виртуальной функции — 471
10.7.3. Вызов виртуальной функции — 471
10.7.4. Виртуальные функции в иерархии SalariedEmployee — 472
10.7.5. Виртуальные деструкторы — 476
10.7.6. Финальные функции и классы — 476
10.8. Абстрактные классы и чистые виртуальные функции — 477
10.8.1. Чистые виртуальные функции — 477
10.8.2. Драйверы устройств: полиморфизм в операционных системах — 478
10.9. Полиморфизм в программе расчета зарплаты — 479
10.9.1. Создание абстрактного базового класса Employee — 480
10.9.2. Создание конкретного производного класса SalariedEmployee — 482
10.9.3. Создание конкретного производного класса CommissionEmployee — 485
10.9.4. Демонстрация полиморфных операций с объектами — 487
10.10. Динамический полиморфизм, виртуальные функции и динамическое связывание «под капотом» компилятора — 490
10.11. Идиома невиртуального интерфейса — 493
10.12. Наследование интерфейса вместо наследования реализации — 501
10.12.1. Переосмысление иерархии класса Employee: интерфейс CompensationModel — 503
10.12.2. Класс Employee — 503
10.12.3. Реализации CompensationModel — 505
10.12.4. Тест-драйв новой иерархии — 508
10.12.5. Преимущества внедрения зависимостей — 509
10.13. Полиморфизм на основе шаблона класса std::variant и функции std::visit — 509
10.14. Множественное наследование — 516
10.14.1. Ромбовидное наследование — 521
10.14.2. Устранение конфликта подобъектов с помощью виртуального наследования базового класса — 523
10.15. Защищенные элементы класса — 525
10.16. Открытое, защищенное и скрытое наследование — 527
10.17. Другие методы динамического полиморфизма и статический полиморфизм — 528
10.17.1. Другие методы динамического полиморфизма — 529
10.17.2. Методы статического полиморфизма — 530
10.17.3. Другие концепции полиморфизма — 532
10.18. Итоги — 533
Глава 11. Перегрузка операторов, семантика копирования и перемещения, умные указатели — 535
11.1. Введение — 536
11.2. Перегруженные операторы класса string стандартной библиотеки — 538
11.3. Основные принципы перегрузки операторов — 543
11.3.1. Перегрузка операторов не происходит автоматически — 543
11.3.2. Операторы, которые не могут быть перегружены — 544
11.3.3. Операторы, которые не нужно перегружать — 544
11.3.4. Правила и ограничения перегрузки операторов — 544
11.4. Управление динамической памятью с помощью операторов new и delete — 545
11.5. Современные методы управления динамической памятью в C++: RAII и умные указатели — 548
11.5.1. Умные указатели — 549
11.5.2. Умный указатель unique_ptr — 549
11.5.3. Владение объектами при работе с unique_ptr — 551
11.5.4. Указатели unique_ptr и традиционные массивы — 551
11.6. Создание класса myArray с перегрузкой операторов — 552
11.6.1. Специальные функции класса — 554
11.6.2. Работа с классом myArray — 554
11.6.3. Определение класса myArray — 565
11.6.4. Конструктор, задающий размер объекта myArray — 566
11.6.5. Скобочная инициализация в конструкторе (C++11) — 567
11.6.6. Копирующий конструктор и оператор копирующего присваивания — 568
11.6.7. Перемещающий конструктор и оператор перемещающего присваивания — 572
11.6.8. Деструктор — 576
11.6.9. Функции toString и size — 577
11.6.10. Перегрузка операторов равенства и неравенства — 577
11.6.11. Перегрузка оператора индекса — 579
11.6.12. Перегрузка унарного конвертирующего оператора bool — 581
11.6.13. Перегрузка оператора префиксного инкремента — 581
11.6.14. Перегрузка оператора постфиксного инкремента — 582
11.6.15. Перегрузка оператора сложения с присваиванием — 583
11.6.16. Перегрузка бинарных операторов извлечения из потока и вставки в поток — 584
11.6.17. Дружественная функция swap — 587
11.7. Оператор трехстороннего сравнения (C++20) — 587
11.8. Преобразования между типами — 591
11.9. Конструкторы и конвертирующие операторы со спецификатором explicit — 592
11.10. Перегрузка оператора вызова функции — 595
11.11. Итоги — 595
Глава 12. Исключения и обзор контрактного программирования — 597
12.1. Введение — 598
12.2. Поток управления при обработке исключения — 602
12.2.1. Определение класса исключений для представления типа проблемы, которая может возникнуть — 602
12.2.2. Демонстрация обработки исключений — 603
12.2.3. Включение кода в блок try — 605
12.2.4. Определение обработчика catch для DivideByZeroException — 605
12.2.5. Модель завершения обработки исключений — 606
12.2.6. Поток управления при вводе ненулевого знаменателя — 607
12.2.7. Поток управления при вводе нулевого знаменателя — 607
12.3. Гарантии безопасности исключений и noexcept — 608
12.4. Повторная генерация исключений — 609
12.5. Размотка стека и необработанные исключения — 611
12.6. Когда надо обрабатывать исключения — 613
12.6.1. Макрос assert — 616
12.6.2. Немедленное завершение — 616
12.7. Конструкторы, деструкторы и обработка исключений — 617
12.7.1. Генерация исключений в конструкторах — 617
12.7.2. Перехват исключений в конструкторах с помощью функциональных блоков try — 618
12.7.3. Исключения, деструкторы и noexcept(false) — 620
12.8. Обработка исключений оператора new — 621
12.8.1. Генерация исключения bad_alloc оператора new — 622
12.8.2. Оператор new, возвращающий nullptr при сбое — 623
12.8.3. Обработка исключений оператора new с помощью функции set_new_handler — 624
12.9. Иерархия исключений стандартной библиотеки — 625
12.10. Альтернатива блоку finally в языке C++: RAII («получение ресурсов есть инициализация») — 628
12.11. Библиотеки, поддерживающие и исключения, и коды ошибок — 629
12.12. Журнал ошибок — 630
12.13. Основы контрактного программирования — 631
12.14. Итоги — 640
Глава 13. Контейнеры и итераторы стандартной библиотеки — 642
13.1. Введение — 643
13.2. Основы контейнеров — 645
13.2.1. Общие вложенные типы в последовательных и ассоциативных контейнерах — 647
13.2.2. Общие функции контейнеров — 648
13.2.3. Требования к элементам контейнера — 651
13.3. Работа с итераторами — 652
13.3.1. Использование istream_iterator для ввода и ostream_iterator для вывода — 652
13.3.2. Категории итераторов — 654
13.3.3. Поддерживаемые контейнеры — 655
13.3.4. Предопределенные типы итераторов — 656
13.3.5. Операторы для работы с итераторами — 656
13.4. Несколько слов об алгоритмах для обработки контейнеров — 658
13.5. Последовательные контейнеры — 658
13.6. Последовательный контейнер vector — 659
13.6.1. Использование векторов и итераторов — 659
13.6.2. Функции для обработки элементов вектора — 664
13.7. Последовательный контейнер list — 668
13.8. Последовательный контейнер deque — 673
13.9. Ассоциативные контейнеры — 675
13.9.1. Ассоциативный контейнер multiset — 676
13.9.2. Ассоциативный контейнер set — 680
13.9.3. Ассоциативный контейнер multimap — 682
13.9.4. Ассоциативный контейнер map — 685
13.10. Адаптеры контейнеров — 686
13.10.1. Адаптер stack — 687
13.10.2. Адаптер queue — 689
13.10.3. Адаптер priority_queue — 690
13.11. Псевдоконтейнер bitset — 692
13.12. Основы нотации «O-большое» — 694
13.13. Основы хеш-таблиц — 697
13.14. Итоги — 700
Глава 14. Алгоритмы стандартной библиотеки, диапазоны и представления C++20 — 701
14.1. Введение — 702
14.2. Требования алгоритмов: концепты (C++20) — 704
14.3. Лямбда-выражения и алгоритмы — 706
14.4. Алгоритмы — 710
14.4.1. Алгоритмы fill, fill_n, generate и generate_n — 710
14.4.2. Алгоритмы equal, mismatch и lexicographical_compare — 713
14.4.3. Алгоритмы remove, remove_if, remove_copy и remove_copy_if — 716
14.4.4. Алгоритмы replace, replace_if, replace_copy и replace_copy_if — 721
14.4.5. Алгоритмы перемешивания, подсчетов, поиска минимального и максимального элементов — 723
14.4.6. Алгоритмы поиска и сортировки — 727
14.4.7. Алгоритмы swap, iter_swap и swap_ranges — 731
14.4.8. Алгоритмы copy_backward, merge, unique, reverse, copy_if и copy_n — 734
14.4.9. Алгоритмы inplace_merge, unique_copy и reverse_copy — 737
14.4.10. Операции со множествами — 739
14.4.11. Алгоритмы lower_bound, upper_bound и equal_range — 742
14.4.12. Алгоритмы min, max и minmax — 744
14.4.13. Алгоритмы gcd, lcm, iota, reduce и partial_sum (заголовок ) — 745
14.4.14. Пирамидальная сортировка кучи и приоритетные очереди — 749
14.5. Функциональные объекты (функторы) — 754
14.6. Проекции — 759
14.7. Представления (C++20) и функциональное программирование — 763
14.7.1. Адаптеры диапазонов — 763
14.7.2. Работа с адаптерами диапазонов и представлениями — 765
14.8. Основы параллельных алгоритмов — 770
14.9. Краткое описание алгоритмов стандартной библиотеки — 772
14.10. Диапазоны в C++23 — 776
14.11. Итоги — 777
Глава 15. Шаблоны, концепты (C++20) и метапрограммирование — 779
15.1. Введение — 780
15.2. Пользовательские шаблоны классов и статический полиморфизм — 783
15.3. Расширения функциональности шаблонов, введенные в C++20 — 789
15.3.1. Сокращенные шаблоны функций (C++20) — 789
15.3.2. Шаблоны лямбда-выражений (C++20) — 791
15.4. Концепты (C++20): первый взгляд — 791
15.4.1. Неограниченный шаблон функции multiply — 793
15.4.2. Ограниченный шаблон функции с условием requires (C++20) — 796
15.4.3. Концепты, предопределенные в C++20 — 799
15.5. Признаки типов — 801
15.6. Концепты: детальное рассмотрение — 806
15.6.1. Создание пользовательского концепта — 807
15.6.2. Использование концепта — 808
15.6.3. Концепты в сокращенных шаблонах функций — 809
15.6.4. Перегрузка на основе концептов — 810
15.6.5. Выражения requires — 813
15.6.6. Демонстрационные концепты — 817
15.6.7. Технологии, применявшиеся до появления концептов: SFINAE и отправка тегов — 818
15.7. Тест-драйв концептов с помощью объявления static_assert — 819
15.8. Создание пользовательского алгоритма — 822
15.9. Создание пользовательского контейнера и пользовательских итераторов — 824
15.9.1. Шаблон класса ConstIterator — 827
15.9.2. Шаблон класса Iterator — 830
15.9.3. Шаблон класса MyArray — 832
15.9.4. Дедуктивная инструкция для скобочной инициализации объекта myArray — 836
15.9.5. Тест-драйв класса myArray и его пользовательских итераторов с алгоритмами std::ranges — 838
15.10. Аргументы по умолчанию для параметров-типов шаблона — 842
15.11. Шаблоны переменных — 842
15.12. Вариативные шаблоны и выражения свертки — 843
15.12.1. Кортежи: вариативный шаблон класса tuple — 843
15.12.2. Вариативные шаблоны функций и основы выражений свертки (C++17) — 847
15.12.3. Типы выражений свертки — 851
15.12.4. Применение операторов в унарных выражениях свертки — 852
15.12.5. Применение операторов в бинарных выражениях свертки — 854
15.12.6. Оператор «запятая» для повторения операций — 856
15.12.7. Ограничение элементов пакета параметров одним типом — 857
15.13. Метапрограммирование на основе шаблонов — 859
15.13.1. Шаблоны C++ обладают полнотой по Тьюрингу — 860
15.13.2. Вычисления на этапе компиляции — 861
15.13.3. Условная компиляция в метапрограммировании на основе шаблонов и инструкции constexpr if — 866
15.13.4. Метафункции типа — 869
15.14. Итоги — 873
Глава 16. Модули (C++20): технология разработки больших программ — 875
16.1. Введение — 876
16.2. Компиляция и компоновка до C++20 — 878
16.3. Преимущества и предназначение модулей — 880
16.4. Пример перехода на модули: заголовочные единицы трансляции — 881
16.5. Модули могут уменьшать размеры единиц трансляции и время компиляции — 884
16.6. Пример: создание и использование модуля — 886
16.6.1. Объявление модульной единицы — 887
16.6.2. Экспорт объявления — 889
16.6.3. Экспорт группы объявлений — 890
16.6.4. Экспорт пространства имен — 890
16.6.5. Экспорт элемента пространства имен — 891
16.6.6. Импорт модуля для его использования в экспорте объявлений — 891
16.6.7. Пример: попытка доступа к неэкспортированному элементу модуля — 893
16.7. Глобальный фрагмент модуля — 896
16.8. Отделение интерфейса от реализации — 896
16.8.1. Пример: единицы реализации модуля — 897
16.8.2. Пример: класс на основе модулей — 900
16.8.3. Фрагмент :private — 903
16.9. Разделы модуля — 904
16.9.1. Пример: разделы интерфейса модуля — 904
16.9.2. Разделы реализации модуля — 908
16.9.3. Пример: «подмодули» и разделы — 908
16.10. Дополнительные примеры работы с модулями — 913
16.10.1. Пример: импорт стандартной библиотеки C++ в виде модулей — 914
16.10.2. Пример: запрет циклических зависимостей — 916
16.10.3. Пример: инструкции import не наследуются — 917
16.10.4. Пример: видимость и доступность модулей — 918
16.11. Перенос кода в модули — 920
16.12. Будущее модулей и инструментов для работы с ними — 921
16.13. Итоги — 922
Приложение: видео про модули — 924
Приложение: статьи про модули — 925
Приложение: глоссарий по модулям — 928
Глава 17. Параллельные алгоритмы и конкурентность: высокоуровневый подход — 931
17.1. Введение — 932
17.2. Параллельные алгоритмы стандартной библиотеки (C++17) — 935
17.2.1. Пример: сравнение быстродействия последовательного и параллельного алгоритмов сортировки — 936
17.2.2. Когда нужны параллельные алгоритмы — 940
17.2.3. Политики выполнения — 941
17.2.4. Пример: сравнение быстродействия параллельных и векторных операций — 941
17.2.5. Дополнительные сведения о параллельных алгоритмах — 944
17.3. Многопоточное программирование — 945
17.3.1. Состояния потока и жизненный цикл потока — 945
17.3.2. Тупики и неопределенно долгие отсрочки — 948
17.4. Запуск задач с помощью std::jthread — 951
17.4.1. Определение задачи для выполнения в потоке — 951
17.4.2. Выполнение задачи в потоке jthread — 953
17.4.3. Преимущества класса jthread перед классом thread — 956
17.5. Отношения между производителем и потребителем: первый эксперимент — 957
17.6. Синхронизация доступа производителя и потребителя к общим изменяемым данным — 965
17.6.1. Класс SynchronizedBuffer: мьютексы, блокировки и условные переменные — 967
17.6.2. Тестирование класса SynchronizedBuffer — 975
17.7. Производитель и потребитель: минимизация ожидания с помощью кольцевого буфера — 979
17.8. Читатели и писатели — 989
17.9. Кооперативное прерывание потоков класса jthread — 991
17.10. Запуск задач с помощью шаблона функции std::async — 994
17.11. Однократная потокобезопасная инициализация — 1002
17.12. Основы атомарных типов — 1004
17.13. Координация потоков с помощью защелок и барьеров (C++20) — 1008
17.13.1. Защелки класса std::latch (C++20) — 1009
17.13.2. Барьеры класса std::barrier (C++20) — 1012
17.14. Семафоры (C++20) — 1016
17.15. C++23: взгляд в будущее конкурентности — 1020
17.15.1. Параллельные алгоритмы std::ranges — 1020
17.15.2. Конкурентные контейнеры — 1020
17.15.3. Другие материалы, связанные с конкурентностью — 1021
17.16. Итоги — 1021
Глава 18. Корутины (C++20) — 1024
18.1. Введение — 1025
18.2. Библиотеки поддержки корутин — 1026
18.3. Установка библиотек concurrencpp и generator — 1028
18.4. Создание корутины-генератора с помощью библиотеки generator — 1029
18.5. Запуск задач с помощью библиотеки concurrencpp — 1033
18.6. Создание корутины, содержащей co_await и co_return — 1039
18.7. Низкоуровневые концепции корутин — 1048
18.8. Развитие корутин в C++23 — 1051
18.9. Итоги — 1051
Приложение А. Приоритеты и группировка операторов — 1052
Приложение Б. Набор символов — 1055
Библиотека программиста - Дейтел Пол, Дейтел Харви - C++20 for Programmers / C++20 для программистов [2024, PDF, RUS] [uztracker.net-24927].torrent  
Торрент: Зарегистрирован [ 2025-06-01 12:54 ]

info_hash: 657B0B02D729B6FB6C6F5317DEA5659626C4BE07

Скачать .torrent


4 KB

Статус: проверено · MAGNAT · 6 месяца 4 дня назад
Скачано: 19 раза
Размер: 12.05 MB
Оценка: 
(Голосов: 0)
Поблагодарили: 0  Спасибо
Показать сообщения:    
Форум Похожие раздачи Автор Размер
♫ Детективы, приключения, триллеры Шеридан Тейлор - Сикарио [Библиотекарь, 2022, 68 kbps, MP3] MAGNAT 80 MB
Художественная литература Библиотека Flibusta (только FB2) на 01.11.2025 Conteo 499.14 GB
Художественная литература Библиотека Либрусек [lib.rus.ec] + MyHomeLib [2009-2025, FB2] (Официальная) Conteo 388 GB
Художественная литература Библиотека Флибуста + MyHomeLib + inpx [01.08] (2025) FB2 ZUBDOLGOPA 489.69 GB
♫ Мистика, фантастика, ужасы Антон Старновский - Библиотекарь государя 04. Империя [2024, Kama Alex, 96 kbps, МР3] Kon912 278 MB
♫ Мистика, фантастика, ужасы Антон Старновский - Библиотекарь государя 03. Буква [2024, Alex, 96 kbps, МР3] Kon912 322 MB
♫ Мистика, фантастика, ужасы Антон Старновский - Библиотекарь государя 02. Академия [2024, Gag_2001, 56 kbps, МР3] Kon912 185 MB
♫ Мистика, фантастика, ужасы Антон Старновский - Библиотекарь государя 01 [2024, Mr.Ozvuchkin, 128 kbps, МР3] Kon912 530 MB
Ответить на тему Главная » Литература » Книги FB2 » Учебно-техническая литература

Текущее время: 05-Дек 14:43

Часовой пояс: UTC + 5



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы

[  Время выполнения: 0,6887 сек  |  MySQL: 0,6729 сек (98%) · 18 запр.  |  сжатие Gzip: выкл  |  Память: 394.19 KB / 2.79 MB / 1.85 MB  ] |  |  |