С++ 1MIT весна 2018
Лекции
Преподаватель: Линский Евгений Михайлович (evgeny.linsky@gmail.com)
Шаблоны (базовый синтаксис). Медиа:lect01.pdf
Шаблоны (шаблонная переменная, специализация). Исключения (базовый синтаксис). Медиа:lect02.pdf
Исключения (RAII, гарантии). Приведение типов xxx_cast. RTTI. Медиа:lect03.pdf
Последовательные контейнеры. Итераторы. Медиа:lect04.pdf
Ассоциативные контейнеры. Алгоритмы. Медиа:lect05.pdf
С++11. move. Медиа:lect06.pdf
C++11. auto. lambda. Медиа:lect07.pdf
Метапрограммирование. Variadic templates, SFINAE, enable_if. Медиа:lect08.pdf
STL в C++11. std::thread. Медиа:lect09.pdf
Экзамен
Предварительная версия билетов (будет уточнена ближе к экзамену). В каждом билете требуется привести примеры “разумных программ” и объяснить, зачем нужна каждая синтаксическая конструкция. Примеры с названиями Foo, Bar, Baz “разумными” не считаются.
Билеты
- Шаблоны
- решение в стиле C (#define)
- шаблонные классы
- шаблонные функции
- специализация шаблонов (частичные и полные; в т.ч. для функций)
- шаблонный параметр, не являющийся типом
- Исключения
- обработка ошибок в стиле C
- try/catch/throw
- исключения в конструкторах и деструкторах
- идиома RAII: использование и примеры классов
- гарантии исключений
- Последовательные контейнеры
- string, vector, list
- внутреннее устройство и основные операции
- итераторы и их инвалидация
- Ассоциативные контейнеры
- set, multiset, map, multimap
- внутреннее устройство и основные операции
- итераторы и их инвалидация
- Алгоритмы
- функторы
- обзор алгоритмов с примерами (swap, iter_swap, sort, find, copy, unique, remove_if, lower_bound)
- erase-remove idiom
- реализация алгоритмов через итераторы
- Реализация итераторов
- advance, distance (зачем и реализация)
- iterator_traits (value_type, iterator_category)
- реализация собственного итератора
- Приведение типов и наследование
- C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества
- RTTI и dynamic_cast
- move семантика
- rvalue и lvalue
- rvalue references
- move constructor, move assignment
- move
- Переменное число аргументов
- переменное число параметров в стиле C (va_arg, va_list, va_start, va_end)
- variadic templates (для функций)
- function (использование)
- bind (использование)
- С++11. Разное.
- auto, decltype
- initializer_list
- default, delete, override, final
- lambda и захваты
- C++11. STL.
- unordered_set, unordered_map
- shared_ptr, unique_ptr
- for_each, begin(), end(), next()
- array, forward_list
- Метапрограммирование
- решение в стиле C (#define, #ifdef)
- SFINAE, реализация предиката для типа
- type_traits, enable_if
- Потоки и мутексы
- зачем нужны потоки?
- конкурентный доступ к переменным
- thread
- mutex, lock_guard
- C++14/C++17
- улучшение в языке (по выбору студента)
- std::filesystem
- std::variant, std::any, std:optional
Практика Гулецкий
Преподаватель: Артур Гулецкий (hatless.fox@gmail.com)
Практика Афанасьев
Преподаватель: Антон Афанасьев (anton.f.afanasev@yandex.ru)
Практика Лапшин
Преподаватель: Дмитрий Лапшин, по вопросам курса писать сюда: au-cpp@ldvsoft.net.