С++ 1MIT весна 2018 — различия между версиями
Linsky (обсуждение | вклад) (→Лекции) |
Linsky (обсуждение | вклад) (→Экзамен) |
||
Строка 23: | Строка 23: | ||
== Экзамен == | == Экзамен == | ||
− | Предварительная версия билетов (будет уточнена ближе к экзамену) | + | Предварительная версия билетов (будет уточнена ближе к экзамену). В каждом билете требуется привести примеры “разумных программ” и объяснить, зачем нужна каждая синтаксическая конструкция. Примеры с названиями 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 | |
− | + | #* universal reference, forward | |
− | + | # Переменное число аргументов | |
− | + | #* переменное число параметров в стиле 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 | |
− | + | #* conditional_variable | |
− | + | # C++14/C++17 | |
− | + | #* улучшение в языке (по выбору студента) | |
− | + | #* std::filesystem | |
− | + | #* std::variant, std::any, std:optional | |
== Практика Гулецкий == | == Практика Гулецкий == |
Версия 19:59, 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
Экзамен
Предварительная версия билетов (будет уточнена ближе к экзамену). В каждом билете требуется привести примеры “разумных программ” и объяснить, зачем нужна каждая синтаксическая конструкция. Примеры с названиями 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
- universal reference, forward
- Переменное число аргументов
- переменное число параметров в стиле 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
- conditional_variable
- 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.