С++ 1MIT весна 2018 — различия между версиями
Linsky (обсуждение | вклад) (→Лекции) |
Linsky (обсуждение | вклад) (→Лекции) |
||
Строка 20: | Строка 20: | ||
STL в C++11. std::thread. [[Медиа:lect09.pdf]] | STL в C++11. std::thread. [[Медиа:lect09.pdf]] | ||
+ | |||
+ | == Экзамен == | ||
+ | |||
+ | Предварительная версия билетов (будет уточнена ближе к экзамену) | ||
+ | |||
+ | NB. В каждом билете требуется привести примеры “разумных программ” и объяснить, зачем нужна каждая синтаксическая конструкция. Примеры с названиями Foo, Bar, Baz “разумными” не считаются, требуется что-то, что понравится преподавателю. | ||
+ | |||
+ | Билеты | ||
+ | 01. Шаблоны | ||
+ | - решение в стиле C (#define) | ||
+ | - шаблонные классы | ||
+ | - шаблонные функции | ||
+ | - специализация шаблонов (частичные и полные; в т.ч. для функций) | ||
+ | - шаблонный параметр, не являющийся типом | ||
+ | |||
+ | 02. Исключения | ||
+ | - обработка ошибок в стиле C | ||
+ | - try/catch/throw | ||
+ | - исключения в конструкторах и деструкторах | ||
+ | - идиома RAII: использование и примеры классов | ||
+ | - гарантии исключений | ||
+ | |||
+ | 03. Последовательные контейнеры | ||
+ | - string, vector, list | ||
+ | - внутреннее устройство и основные операции | ||
+ | - итераторы и их инвалидация | ||
+ | |||
+ | 04. Ассоциативные контейнеры | ||
+ | - set, multiset, map, multimap | ||
+ | - внутреннее устройство и основные операции | ||
+ | - итераторы и их инвалидация | ||
+ | |||
+ | 05. Алгоритмы | ||
+ | - функторы | ||
+ | - обзор алгоритмов с примерами (swap, iter_swap, sort, find, copy, unique, remove_if, lower_bound) | ||
+ | - erase-remove idiom | ||
+ | - реализация алгоритмов через итераторы | ||
+ | |||
+ | 06. Реализация итераторов | ||
+ | - advance, distance (зачем и реализация) | ||
+ | - iterator_traits (value_type, iterator_category) | ||
+ | - реализация собственного итератора | ||
+ | |||
+ | 07. Приведение типов и наследование | ||
+ | - C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества | ||
+ | - RTTI и dynamic_cast | ||
+ | |||
+ | 08. move семантика | ||
+ | - rvalue и lvalue | ||
+ | - rvalue references | ||
+ | - move constructor, move assignment | ||
+ | - move | ||
+ | - universal reference, forward | ||
+ | |||
+ | 09. Переменное число аргументов | ||
+ | - переменное число параметров в стиле C (va_arg, va_list, va_start, va_end) | ||
+ | - variadic templates (для функций) | ||
+ | - function (использование) | ||
+ | - bind (использование) | ||
+ | |||
+ | 10. С++11. Разное. | ||
+ | - auto, decltype | ||
+ | - initializer_list | ||
+ | - default, delete, override, final | ||
+ | - lambda и захваты | ||
+ | |||
+ | 11. C++11. STL. | ||
+ | - unordered_set, unordered_map | ||
+ | - shared_ptr, unique_ptr | ||
+ | - for_each, begin(), end(), next() | ||
+ | - array, forward_list | ||
+ | |||
+ | 12. Метапрограммирование | ||
+ | - решение в стиле C (#define, #ifdef) | ||
+ | - SFINAE, реализация предиката для типа | ||
+ | - type_traits, enable_if | ||
+ | |||
+ | 13. Потоки и мутексы | ||
+ | - зачем нужны потоки? | ||
+ | - конкурентный доступ к переменным | ||
+ | - thread | ||
+ | - mutex, lock_guard | ||
+ | - conditional_variable | ||
+ | |||
+ | 14. C++14/C++17 | ||
+ | - улучшение в языке (по выбору студента) | ||
+ | - std::filesystem | ||
+ | - std::variant, std::any, std:optional | ||
== Практика Гулецкий == | == Практика Гулецкий == |
Версия 19:54, 25 мая 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
Экзамен
Предварительная версия билетов (будет уточнена ближе к экзамену)
NB. В каждом билете требуется привести примеры “разумных программ” и объяснить, зачем нужна каждая синтаксическая конструкция. Примеры с названиями Foo, Bar, Baz “разумными” не считаются, требуется что-то, что понравится преподавателю.
Билеты 01. Шаблоны - решение в стиле C (#define) - шаблонные классы - шаблонные функции - специализация шаблонов (частичные и полные; в т.ч. для функций) - шаблонный параметр, не являющийся типом
02. Исключения - обработка ошибок в стиле C - try/catch/throw - исключения в конструкторах и деструкторах - идиома RAII: использование и примеры классов - гарантии исключений
03. Последовательные контейнеры - string, vector, list - внутреннее устройство и основные операции - итераторы и их инвалидация
04. Ассоциативные контейнеры - set, multiset, map, multimap - внутреннее устройство и основные операции - итераторы и их инвалидация
05. Алгоритмы - функторы - обзор алгоритмов с примерами (swap, iter_swap, sort, find, copy, unique, remove_if, lower_bound) - erase-remove idiom - реализация алгоритмов через итераторы
06. Реализация итераторов - advance, distance (зачем и реализация) - iterator_traits (value_type, iterator_category) - реализация собственного итератора
07. Приведение типов и наследование - C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества - RTTI и dynamic_cast
08. move семантика - rvalue и lvalue - rvalue references - move constructor, move assignment - move - universal reference, forward
09. Переменное число аргументов - переменное число параметров в стиле C (va_arg, va_list, va_start, va_end) - variadic templates (для функций) - function (использование) - bind (использование)
10. С++11. Разное. - auto, decltype - initializer_list - default, delete, override, final - lambda и захваты
11. C++11. STL. - unordered_set, unordered_map - shared_ptr, unique_ptr - for_each, begin(), end(), next() - array, forward_list
12. Метапрограммирование - решение в стиле C (#define, #ifdef) - SFINAE, реализация предиката для типа - type_traits, enable_if
13. Потоки и мутексы - зачем нужны потоки? - конкурентный доступ к переменным - thread - mutex, lock_guard - conditional_variable
14. 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.