Современный язык программирования Си++
Данный курс доступен на сайте "Университет без границ".
Аннотация
В настоящее время язык программирования Cи++ активно развивается, международный комитет по стандартам обсуждает и регулярно принимает новые версии стандарта на этот язык, в которых добавляются новые существенные возможности, облегчающие и упрощающие решение широкого круга задач программирования. В данном курсе производится введение в Стандартную Библиотеку Шаблонов (STL) языка Си++ и новые возможности языка Си++, реализованные в большинстве современных компиляторов. Подробно разбирается функциональность стандартной библиотеки шаблонов, а также ее внутреннее устройство (итераторы, алгоритмы, контейнеры). Помимо обзора возможностей библиотеки STL производится разбор нововведений в сам язык программирования Cи++, подробно разбираются примеры их использования, иллюстрирующие их назначение. По каждой теме спецкурса студенты выполняют и сдают практические задания с измерением эффективности использования различных возможностей, имеющихся в стандартной библиотеке Cи++.
Программа
- Введение. Содержание курса, литература. Программирование исключительных состояний и шаблонов. Специализация шаблонов: полная и частичная. Архитектура библиотеки STL.
- Утилиты: шаблоны пар разнородных данных, шаблоны реляционных операторов.
- Понятие итератора. Аксиоматика итераторов, категории итераторов и их свойства. Способы реализации итераторов при наличии и отсутствии частичной специализации у компилятора. Реверсивные итераторы, итераторы потоков Cи++.
- Аллокаторы. Их назначение и реализация. Методы аллокаторов, их назначение и использование. Автоматические и «умные» указатели. Назначение, реализация.
- Понятие алгоритма в библиотеке STL. Определения минимума и максимума по условию, строгой квазиупорядоченности, упорядочености по оператору «меньше», кучи (heap). Понятие предиката и предикативной формы алгоритма. Оценка производительности алгоритмов (работа за константное, логарифмическое и линейное время).
- Алгоритмы STL: алгоритмы поиска, сортировки, подсчета, копирования, сравнения последовательностей, генерации, перебора, операции теории множеств и комбинаторики, алгоритмы работы с кучами (heap).
- Арифметические операции над элементами последовательностей, скалярные произведения, симметрическая разность, частичные разности, суммирование.
- Функторы в STL: объекты-функции (унарные и бинарные), операции с ними.
- Контейнеры STL: vector, deque, list, slist. Адаптеры контейнеров stack, queue, priority_queue. Методы контейнеров.
- Ассоциативные контейнеры STL: set, map, multiset, multimap, unordered_set, unordered_map.
- Обзор других возможностей стандартной библиотеки Cи++: valarray, slice_array, bit_vector, строки.
- Обзор современных расширений стандарта Cи++ 2011 года: автоматические типы, циклы с диапазоном, move-семантика, лямбда-функции.
- Обзор современных расширений стандарта Cи++ 2011 года: потоки исполнения (threads) и асинхронное программирование.
- Обзор современных расширений стандарта Cи++ 2011 года: комплексная арифметика, случайные числа, регулярные выражения, кортежи (tuples).
Литература
- Н. Джосаттис. Стандартная библиотека C++. Справочное руководство.
- Б.Страуструп. Язык программирования С++. Издание 3.
- П.Дж.Плаугер, А.Степанов,М.Ли,Д.Массер. STL стандартная библиотека шаблонов C++.
- 2014 ISO/IEC CD 14882. International standard C++ programming language.
- 2017 ISO/IEC Working Draft, Standard for Programming Language C++.
- 2020 ISO/IEC Working Draft, Standard for Programming Language C++.
Вложение | Размер |
---|---|
![]() | 231.33 КБ |