С++ 1MIT весна 2018 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Экзамен)
(Экзамен)
Строка 32: Строка 32:
 
#* специализация шаблонов (частичные и полные; в т.ч. для функций)
 
#* специализация шаблонов (частичные и полные; в т.ч. для функций)
 
#* шаблонный параметр, не являющийся типом
 
#* шаблонный параметр, не являющийся типом
 
 
# Исключения
 
# Исключения
 
#* обработка ошибок в стиле C
 
#* обработка ошибок в стиле C
Строка 39: Строка 38:
 
#* идиома RAII: использование и примеры классов
 
#* идиома RAII: использование и примеры классов
 
#* гарантии исключений
 
#* гарантии исключений
 
 
# Последовательные контейнеры
 
# Последовательные контейнеры
 
#* string, vector, list
 
#* string, vector, list
 
#* внутреннее устройство и основные операции
 
#* внутреннее устройство и основные операции
 
#* итераторы и их инвалидация
 
#* итераторы и их инвалидация
 
 
# Ассоциативные контейнеры
 
# Ассоциативные контейнеры
 
#* set, multiset, map, multimap
 
#* set, multiset, map, multimap
 
#* внутреннее устройство и основные операции
 
#* внутреннее устройство и основные операции
 
#* итераторы и их инвалидация
 
#* итераторы и их инвалидация
 
 
# Алгоритмы
 
# Алгоритмы
 
#* функторы
 
#* функторы
Строка 55: Строка 51:
 
#* erase-remove idiom
 
#* erase-remove idiom
 
#* реализация алгоритмов через итераторы
 
#* реализация алгоритмов через итераторы
 
 
# Реализация итераторов
 
# Реализация итераторов
 
#* advance, distance (зачем и реализация)
 
#* advance, distance (зачем и реализация)
 
#* iterator_traits (value_type, iterator_category)
 
#* iterator_traits (value_type, iterator_category)
 
#* реализация собственного итератора
 
#* реализация собственного итератора
 
 
# Приведение типов и наследование
 
# Приведение типов и наследование
 
#* C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества
 
#* C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества
 
#* RTTI и dynamic_cast
 
#* RTTI и dynamic_cast
 
 
# move семантика
 
# move семантика
 
#* rvalue и lvalue
 
#* rvalue и lvalue
Строка 71: Строка 64:
 
#* move
 
#* move
 
#* universal reference, forward
 
#* universal reference, forward
 
 
# Переменное число аргументов  
 
# Переменное число аргументов  
 
#* переменное число параметров в стиле C (va_arg, va_list, va_start, va_end)
 
#* переменное число параметров в стиле C (va_arg, va_list, va_start, va_end)
Строка 77: Строка 69:
 
#* function (использование)
 
#* function (использование)
 
#* bind (использование)
 
#* bind (использование)
 
 
# С++11. Разное.
 
# С++11. Разное.
 
#* auto, decltype
 
#* auto, decltype
Строка 83: Строка 74:
 
#* default, delete, override, final
 
#* default, delete, override, final
 
#* lambda и захваты
 
#* lambda и захваты
 
 
# C++11. STL.
 
# C++11. STL.
 
#* unordered_set, unordered_map
 
#* unordered_set, unordered_map
Строка 89: Строка 79:
 
#* for_each, begin(), end(), next()
 
#* for_each, begin(), end(), next()
 
#* array, forward_list
 
#* array, forward_list
 
 
# Метапрограммирование
 
# Метапрограммирование
 
#* решение в стиле C (#define, #ifdef)
 
#* решение в стиле C (#define, #ifdef)
 
#* SFINAE, реализация предиката для типа
 
#* SFINAE, реализация предиката для типа
 
#* type_traits, enable_if
 
#* type_traits, enable_if
 
 
# Потоки и мутексы
 
# Потоки и мутексы
 
#* зачем нужны потоки?
 
#* зачем нужны потоки?
Строка 101: Строка 89:
 
#* mutex, lock_guard
 
#* mutex, lock_guard
 
#* conditional_variable
 
#* conditional_variable
 
 
# C++14/C++17
 
# C++14/C++17
 
#* улучшение в языке (по выбору студента)
 
#* улучшение в языке (по выбору студента)

Версия 20:00, 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 “разумными” не считаются.

Билеты

  1. Шаблоны
    • решение в стиле C (#define)
    • шаблонные классы
    • шаблонные функции
    • специализация шаблонов (частичные и полные; в т.ч. для функций)
    • шаблонный параметр, не являющийся типом
  2. Исключения
    • обработка ошибок в стиле C
    • try/catch/throw
    • исключения в конструкторах и деструкторах
    • идиома RAII: использование и примеры классов
    • гарантии исключений
  3. Последовательные контейнеры
    • string, vector, list
    • внутреннее устройство и основные операции
    • итераторы и их инвалидация
  4. Ассоциативные контейнеры
    • set, multiset, map, multimap
    • внутреннее устройство и основные операции
    • итераторы и их инвалидация
  5. Алгоритмы
    • функторы
    • обзор алгоритмов с примерами (swap, iter_swap, sort, find, copy, unique, remove_if, lower_bound)
    • erase-remove idiom
    • реализация алгоритмов через итераторы
  6. Реализация итераторов
    • advance, distance (зачем и реализация)
    • iterator_traits (value_type, iterator_category)
    • реализация собственного итератора
  7. Приведение типов и наследование
    • C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества
    • RTTI и dynamic_cast
  8. move семантика
    • rvalue и lvalue
    • rvalue references
    • move constructor, move assignment
    • move
    • universal reference, forward
  9. Переменное число аргументов
    • переменное число параметров в стиле 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.