С++ 1MIT весна 2018 — различия между версиями
Linsky (обсуждение | вклад) (→Лекции) |
Linsky (обсуждение | вклад) (→Экзамен) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 16: | Строка 16: | ||
C++11. auto. lambda. [[Медиа:lect07.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(a: collection), 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 (использование) | ||
== Практика Гулецкий == | == Практика Гулецкий == |
Текущая версия на 13:10, 7 июня 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(a: collection), 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.