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

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

Билеты

  1. Шаблоны
    • решение в стиле C (#define)
    • шаблонные классы
    • шаблонные функции
    • специализация шаблонов (частичные и полные; в т.ч. для функций)
    • шаблонный параметр, не являющийся типом
  1. Исключения
    • обработка ошибок в стиле C
    • try/catch/throw
    • исключения в конструкторах и деструкторах
    • идиома RAII: использование и примеры классов
    • гарантии исключений
  1. Последовательные контейнеры
    • string, vector, list
    • внутреннее устройство и основные операции
    • итераторы и их инвалидация
  1. Ассоциативные контейнеры
    • set, multiset, map, multimap
    • внутреннее устройство и основные операции
    • итераторы и их инвалидация
  1. Алгоритмы
    • функторы
    • обзор алгоритмов с примерами (swap, iter_swap, sort, find, copy, unique, remove_if, lower_bound)
    • erase-remove idiom
    • реализация алгоритмов через итераторы
  1. Реализация итераторов
    • advance, distance (зачем и реализация)
    • iterator_traits (value_type, iterator_category)
    • реализация собственного итератора
  1. Приведение типов и наследование
    • C-style cast, static_cast, const_cast, reinterpret_cast - поведение и преимущества
    • RTTI и dynamic_cast
  1. move семантика
    • rvalue и lvalue
    • rvalue references
    • move constructor, move assignment
    • move
    • universal reference, forward
  1. Переменное число аргументов
    • переменное число параметров в стиле C (va_arg, va_list, va_start, va_end)
    • variadic templates (для функций)
    • function (использование)
    • bind (использование)
  1. С++11. Разное.
    • auto, decltype
    • initializer_list
    • default, delete, override, final
    • lambda и захваты
  1. C++11. STL.
    • unordered_set, unordered_map
    • shared_ptr, unique_ptr
    • for_each, begin(), end(), next()
    • array, forward_list
  1. Метапрограммирование
    • решение в стиле C (#define, #ifdef)
    • SFINAE, реализация предиката для типа
    • type_traits, enable_if
  1. Потоки и мутексы
    • зачем нужны потоки?
    • конкурентный доступ к переменным
    • thread
    • mutex, lock_guard
    • conditional_variable
  1. 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.