Привет, Хабр!
Недавно Егор Суворов, преподаватель курса по С++ в Питерской Вышке, прочитал лекцию о некоторых особенностях языка для участников Всероссийской олимпиады школьников по информатике. Егор рассказал о шаблонах в C++, а также где и зачем они возникают: обобщённое программирование структур данных и алгоритмов, функторы и лямбда-функции, как можно повысить уровень абстракций и упростить код.
Важное уточнение: эта лекция не попытка объять необъятное, а краткий экскурс по полезным возможностям C++ для членов олимпиадного сообщества: от извлечения кода в класс до внутренних механизмов работы лямбда-функций и щепотки ограничений (constraints) из C++20. Если интересно, приглашаем к просмотру.
Подробные таймкоды00:53 Что нужно знать перед просмотром лекции
02:00 Особенности С++
03:10 Хорошие источники знаний и практик в C++
04:45 Классы. Стек с минимумом
06:21 Создание своей структуры
09:03 Запрещаем прямой доступ
09:53 Упрощаем отладку
10:29 Шаблоны классов
11:24 Статический полиморфизм в разных языках
12:03 Оптимизация
12:27 Ошибки компиляции и инстанцирование
13:40 Ограничения (С++20)
15:01 Шаблоны функций
15:27 Автовывод параметров
16:21 Class Template Argument Deduction (CTAD, С++17)
16:56 Ошибки компиляции и инстанцирование
17:47 Обобщенное программирование
19:12 Вложенные типы
20:10 Продвинутые техники
20:33 Функторы
21:00 Функциональные объекты
21:56 Как параметр шаблона
22:30 Функторы с состоянием
23:26 Функторы с состоянием для контейнеров
24:42 Лямбда-выражения
25:38 Расшифровка лямбды
26:28 Сохранение в переменную
27:27 Рекурсия не поддерживается
27:56 Захваты по значению и ссылке
29:18 Захват с инициализатором
30:29 Комбинированные захваты
31:16 Применение функторов
32:15 IIFE
33:18 Вектор лямбд и стирание типов (type erasure)
34:36 Функтор как параметр функции
35:51 Функтор как поле класса
37:45 Более сложные структуры данных (декартово дерево, дерево отрезков)
38:34 За кадром: лямбды-компараторы
39:48 За кадром: более сложные шаблоны
41:23 Студенческие проекты на C++ (в прошлом году рассказывали о проектах наших первокурсниках)
Если у вас остались вопросы, смело задавайте их в комментариях или лично Егору.