Современный язык программирования Си++
Данный курс доступен на сайте "Университет без границ".
Аннотация
В настоящее время язык программирования Cи++ активно развивается, международный комитет по стандартам обсуждает и регулярно принимает новые версии стандарта на этот язык, в которых добавляются новые существенные возможности, облегчающие и упрощающие решение широкого круга задач программирования. В данном курсе производится введение в Стандартную Библиотеку Шаблонов (STL) языка Си++ и новые возможности языка Си++, реализованные в большинстве современных компиляторов. Подробно разбирается функциональность стандартной библиотеки шаблонов, а также ее внутреннее устройство (итераторы, алгоритмы, контейнеры). Помимо обзора возможностей библиотеки STL производится разбор нововведений в сам язык программирования Cи++, подробно разбираются примеры их использования, иллюстрирующие их назначение. По каждой теме спецкурса студенты выполняют и сдают практические задания с измерением эффективности использования различных возможностей, имеющихся в стандартной библиотеке Cи++.
Программа
- Введение. Содержание курса, литература. Программирование исключительных состояний и шаблонов. Специализация шаблонов: полная и частичная. Архитектура библиотеки STL.
- Утилиты: шаблоны пар разнородных данных, шаблоны реляционных операторов.
- Понятие итератора. Аксиоматика итераторов, категории итераторов и их свойства. Способы реализации итераторов при наличии и отсутствии частичной специализации у компилятора. Реверсивные итераторы, итераторы потоков Cи++.
- Понятие алгоритма в библиотеке STL. Определения минимума и максимума по условию, строгой квазиупорядоченности, упорядочености по оператору «меньше», кучи (heap). Понятие предиката и предикативной формы алгоритма. Оценка производительности алгоритмов (работа за константное, логарифмическое и линейное время).
- Алгоритмы STL: алгоритмы поиска, сортировки, подсчета, копирования, сравнения последовательностей, генерации, перебора, операции теории множеств и комбинаторики, алгоритмы работы с кучами (heap).
- Арифметические операции над элементами последовательностей, скалярные произведения, симметрическая разность, частичные разности, суммирование.
- Функторы в STL: объекты-функции (унарные и бинарные), операции с ними.
- Разумные указатели: unique_ptr, shared_ptr, weak_ptr
- Контейнеры STL: vector, deque, list, forward_list. Адаптеры контейнеров stack, queue, priority_queue. Методы контейнеров.
- Ассоциативные контейнеры STL: set, map, multiset, multimap, unordered_set, unordered_map.
- Обзор других возможностей стандартной библиотеки Cи++: valarray, slice, bit_vector, строки.
- Обзор современных расширений стандарта Cи++ 2011 года: автоматические типы, циклы с диапазоном, move-семантика, лямбда-функции.
- Обзор современных расширений стандарта Cи++ 2011 года: array, bitset, кортежи (tuples).
- Обзор современных расширений стандарта Cи++ 2017 года: optional, any, variant.
Литература
- Н. Джосаттис. Стандартная библиотека C++. Справочное руководство.
- Б.Страуструп. Язык программирования С++. Издание 3.
- Я.Галовиц. C++17 STL.
- Р.Гримм. C++20 в деталях.
- Д.Вандервуд, Н.Джосаттис, Д.Грегор. Шаблоны C++. Справочник разработчика.
- 2014 ISO/IEC Working Draft, Standard for Programming Language C++.
- 2017 ISO/IEC Working Draft, Standard for Programming Language C++.
- 2020 ISO/IEC Working Draft, Standard for Programming Language C++.
Attachment | Size |
---|---|
Экзаменационные билеты по курсу | 179.82 KB |