Курс по C++ в CS центре, вторая часть

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Computer Science Center — это совместная инициатива Computer Science клуба при ПОМИ РАН, компании JetBrains и Школы анализа данных Яндекса.

Центр существует, чтобы дать возможность талантливым студентам и выпускникам развиваться в интересных им направлениях: Computer Science, Data Science или Software Engineering.

Курс по C ++ в двух частях в центре читает Валерий Михайлович Лесин, valery-l, преподаватель CS центра и совместной магистратуры ИТМО и JetBrains «Разработка программного обеспечения / Software Engineering», технический директор Simlabs.

Вторая часть поможет освоить большую часть возможностей современного С++. Скорее всего, вы не станете гуру в конце второго семестра, но навыка должно хватить для эффективного использования C++ в большинстве проектов, если плюсы там применимы.

Раскусим новые возможности языка и стандартной библиотеки: move семантику, bind/function, enable_if/if constexpr, сoroutines и другие. Посмотрим на некоторые характерные задачи: многопоточное программирование, использование библиотек в Windows и Linux и другие.

Приятного просмотра!

1. Стандартная библиотека. Состав, контейнеры STL, типы контейнеров, контейнер vector, итераторы, как устроен вектор. Контейнер sdt::list, адаптеры, ассоциативные контейнеры, итерирование map, поиск и вставка в map. Индексирование, удаление из map (set). Другие ассоциативные контейнеры.


2. Move semantics && perfect forwarding. Быстрые программы. Return Value Optimization. Lvalue vs Rvalue. Как отличить временный объект от не временного. Преобразование &<-> const &<->&&. Move constructor vs other constructors. Возврат из функции значения vs &&. Возврат больших объектов по значению, передача по значению. Forwarding argument problem. Новые правила для ссылок в C++ 11. Perfect forwarding.


3. Алгоритмы и функторы. Стандартные алгоритмы, описание алгоритмов. Немодифицирующие и модифицирующие операции. Сортировка и поиск. Контейнеры vs итераторы. Стандартные функторы. Boost. range. Range concept.


4. bind & function. Задача: вызов callback’a. Немного магии — std::bind. Как избежать копирования. ref/cref. Использование bind с функторами. Вызов методов. Вложенность bind. std::function. Синергический эффект bind & function. Быстродействие. Как работают placeholder’ы.


5. Исключения. Способы обработки ошибок. try...catch. Типы исключений. Использование RAII. Передача параметров. Класс stack. Гарантии безопасности исключений. Гарантия отсутствия исключений. Копирование стека. Уменьшение требований stack. Спецификация исключений. noexcept operator и noexcept спецификация (C++ 11). STL контейнеры. Гарантии и требования stack.


6. To SFINAE or not to SFINAE. Выбор кода в зависимости от типа. Выбор типа по условию. Проверка приводимости. Проверка на базовый класс. SFINAE. Проверка на контейнер. Выбор по свойству типа.


7. Нововведения С++. Anonymous functions, auto, decltype, variadic templates, parameter pack, pack expansion & fold expression. Non-static data member initializers, if constexpr.


8. Строки. Ввод/вывод. Кодировка (набор символов). Строка std ::basic_string. Базовые операции над строками. boost string algorithms. Text vs Binary files format. Потоки ввода/вывода, вывод, ввод, состояния потока, форматированный ввод/вывод. Манипуляторы, файловые потоки.


9. Препроцессор. Использование и применимость макросов. Определение констант, условная компиляция. Include guard. Макро функции. Превращение токена в строку, конкатенация токенов. Multiline macro, predefined defines. assert. Вариативный макрос, перегрузка макросов. Pimpl идиома.


10. Libraries. Статическая и динамическая библиотеки. Static vs Dynamic. Загрузка библиотек без предварительной линковки. Экспортируемые функции. Технология COM.


11. Многопоточность. Процесс и потоки. Типы многозадачности. Проблемные ситуации. Создание потока. Объект потока std::thread. Вспомогательные функции. Mutual exclusion. Lock management. Exception catching. Exception rethrow. Condition variables.


12. Многопоточность. Часть 2. Отложенные вычисления. Future and Promise. Async and Future. Очередь событий/сообщений. Контракты, концепции.


Первая часть курса
Источник: https://habr.com/ru/company/JetBrains-education/blog/473484/

Интересные статьи

Интересные статьи

Одна из самых важных (на мой взгляд) функций в Битрикс24 это бизнес-процессы. Теоретически они позволяют вам полностью избавиться от бумажных служебок и перенести их в эл...
Часть 1 ‣ Часть 2 ‣ Часть 3 ‣ Часть 4 ‣ Часть 5 ‣ Часть 6 ‣ Часть 7 ‣ Часть 8 ‣ Часть 9 ‣ Часть 10 ‣ Часть 11 ‣ Часть 12 ‣ Часть 13 ‣ Часть 14 ‣ Часть 15 Starlink и погода После т...
Данная история будет состоять из трёх частей, т.к. я выпустил три игры: Beasts Battle Necromancer Returns Magicians Legacy Часть‌ ‌1 Для тех кто предпочитает смотреть, а не...
Что нас побудило создать курс по Docker — хотя на рынке десятки предложений по этой теме, и практически каждая IT-школа отметилась в этом направлении? Побудили нас студенты «Вечерней...
1. Вступление. Здравствуйте. Меня зовут Илья. Я из Санкт-Петербурга. Мне 31 год. С давних пор у меня основные увлечения — аккумуляторы, электротранспорт и авиация. В 2010 году я узнал про самый...