layout title index Лекции по курсу «Языки программирования» 2014, ФИИТ на Мехмате ЮФУ Конспект лекций по курсу ЯП Лекция 1 История C++ Простейшая программа Пространства имен Типы данных Способы инициализации переменных Неявное преобразование типов Основные операции Условный оператор Тернарная условная операция Оператор выбора Операторы цикла Цикл while Цикл do-while Цикл for Оператор , (запятая) Лекция 2 Функции Стандартные функции inline-функции Ссылки Передача аргумента в функцию по ссылке Структуры Передача структуры в функцию Лекция 3 Многофайловая компоновка Заголовочные файлы Содержимое заголовочных файлов Глобальные описания в C++ и необходимость пространств имен Пространства имен и заголовочные файлы Основные этапы сборки проекта Лекция 4 Препроцессор Основные директивы препроцессора Условная компиляция Стражи включения (include guards) Перечисления Перечисления в C++98 Перечисления в C++11 Использование перечислений Массивы Лекция 5 Строки в стиле C Строки в стиле C++ Ввод-вывод Как передавать в функции C- и C++-строки Двумерные массивы Передача в функции двумерных массивов Определение типов в C++ Указатели и адреса Указатели и ссылки Передача параметров в функции Указатель void* Указатели на структуры Указатели и константность Константные указатели Лекция 6 Ссылки на константы Указатели и массивы Операции при работе с указателями Идиома *p++ Передача массива в функцию с помощью указателя С-строки и указатели Лекция 7 Стандартные функции для работы с C-строками Контроль памяти при работе с этими функциями Указатели и динамическая память Ошибки при работе с динамической памятью Массивы в динамической памяти(динамические массивы) Как передавать динамические массивы в функции Двумерные динамические массивы Выделение памяти для статических массивов Выделение памяти для динамических массивов Передача двумерного динамического массива в функции Возврат памяти Динамические структуры данных Шаблоны структур Лекция 8 Линейный односвязный список в динамической памяти Добавление элемента в начало односвязного списка Где хранить шаблоны функций, структур и классов. Отличие шаблонов C++ от обобщений .NET Цикл по односвязному списку Указатели на функции Действие передаваемое параметром (callback) Лекция 9 Освобождение памяти занимаемой списком Векторы и строки (С++) Работа со строками Векторы Классы и перегрузка операций Перегрузка бинарной операции Передача объектов в функцию Лекция 10 Конструктор со списком инициализации Перегрузка операций Перегрузка операции сравнения на равенство Перегрузка операции вывода в поток (чтения из потока) Перегрузка арифметических операций Лекция 11 Перегрузка унарных операций Префиксная унарная операция (@a ++a --a) (общий случай) Постфиксная унарная операция (a@ a++ a--) Перегрузка операции != Класс динамического массива Константные функции-члены Перегрузка операции [] Деструктор и его необходимость Лекция 12 Конструктор копии Три случая, когда вызывается конструктор копий Return Value Optimization Функции-члены, которые генерируются «молча» Конструктор по-умолчанию Операция копирующего присваивания Идиома copy-and-swap Лекция 13 Метод resize() в классе myvector Класс matrix Реализация класса matrix Операция доступа по индексу в matrix Конструктор копий и operator= для класса matrix Лекция 14 move-конструкторы и move-operator= (C++11) Запрет генерации стандартных операторов Класс frac дроби Конструктор преобразования Явные конструкторы преобразования Операции приведения типа Лекция 15 Перегрузка операций ввода-вывода Наследование Порядок вызова конструкторов и деструкторов Преобразование в иерархии "предок-потомок" Лекция 16 Downcast Полиморфизм Виртуальные методы в C++ Цена виртуальности Деструкторы и полиморфизм Полиморфные контейнеры и клонирование Система RTTI (Runtime Type Identification) dynamic_cast Операция typeid и структура type_info Лекция 17 Стандартная библиотека C++ Иерархия потоковых классов ввода/вывода Файловые потоки Строковые потоки Стандартная библиотека шаблонов (STL) Общая характкристика STL Некоторые алгоритмы Лекция 18 Откуда брать итераторы Итераторы в C++11 Концепты Вложенные типы Второй случай использования typename Вложенный класс Лекция 19 Итератор списка Основные контейнеры STL Конструкторы контейнеров Алгоритмы Алгоритм for_each Лекция 20 Захват переменных из внешнего контекста Сумма элементов контейнера с помощью for_each Объекты функции (функторы) Присваивание лямбда функций переменной Виды итераторов Алгоритм find Алгоритм find_if Лекция 21 all_of equal mismatch search copy Итераторы вставки Итерторы потоков Итератор потока ввода Лекция 22 Set и Map Итерация по set Требования от множества Ассоциативный словарь Лекция 23 Алгоритмы модифицирующие последовательность