Шаблоны и концепты в С++20

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Привет, Хабр!

Недавно Егор Суворов, преподаватель курса по С++ в Питерской Вышке, прочитал лекцию о некоторых особенностях языка для участников Всероссийской олимпиады школьников по информатике. Егор рассказал о шаблонах в 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++ (в прошлом году рассказывали о проектах наших первокурсниках)

Если у вас остались вопросы, смело задавайте их в комментариях или лично Егору.

Источник: https://habr.com/ru/company/JetBrains-education/blog/552554/


Интересные статьи

Интересные статьи

Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника В жизни так бывает, причём бывает чаще чем хотелось б...
Маркетплейс – это сервис от 1С-Битрикс, который позволяет разработчикам делиться своими решениями с широкой аудиторией, состоящей из клиентов и других разработчиков.
Ваш сайт работает на 1С-Битрикс? Каждому клиенту вы даёте собственную скидку или назначаете персональную цену на товар? Со временем в вашей 1С сложилась непростая логика ценообразования и формирования...
Однажды, в понедельник, мне пришла в голову мысль — "а покопаюсь ка я в новом ядре" (новым относительно, но об этом позже). Мысль не появилась на ровном месте, а предпосылками для нее стали: ...
В конце мая компания Google представила новую фичу в Google Tag Manager (GTM): Custom Templates или пользовательские шаблоны. Давайте разберемся, зачем она нужна, как ей пользоваться, в чем отлич...