Целочисленные типы, кортежи, шаблонные функции
Что вас ждет?
Введение в целочисленные типы
Преобразования целочисленных типов
Безопасное использование целочисленных типов
Упрощаем оператор сравнения
Кортежи и пары
Возврат нескольких значений из функции
Введение в шаблоны
Универсальные функции вывода контейнеров в поток
Рефакторим код и улучшаем читаемость вывода
Указание шаблонного параметра-типа
Тестирование и отладка
Введение в юнит-тестирование
Декомпозиция решения задачи «Синонимы»
Простейший способ создания юнит-тестов на C++
Отладка решения задачи «Синонимы» с помощью юнит-тестов
Анализ недостатков фреймворка юнит-тестов
Улучшаем assert
Внедряем шаблон AssertEqual во все юнит-тесты
Изолируем запуск отдельных тестов
Избавляемся от смешения вывода тестов и основной программы
Обеспечиваем регулярный запуск юнит-тестов
Собственный фреймворк юнит-тестов.
Общие рекомендации по декомпозиции программы и написанию юнит-тестов
Распределение кода по файлам
Введение в разработку в нескольких файлах на примере задачи «Синонимы»
Механизм работы директивы #include
Обеспечение независимости заголовочных файлов
Проблема двойного включения
Понятия объявления и определения
Механизм сборки проектов, состоящих из нескольких файлов
Правило одного определения
Итераторы, алгоритмы и контейнеры
Введение в итераторы
Концепция полуинтервалов итераторов
Итераторы множеств и словарей
Продвинутое итерирование по контейнерам
Использование итераторов в методах контейнеров
Использование итераторов в алгоритмах
Обратные итераторы
Алгоритмы, возвращающие набор элементов
Итераторы inserter и back_inserter
Отличия итераторов векторов и множеств
Категории итераторов, документация
Стек, очередь и дек
Алгоритмы поиска
Анализ распространённых ошибок