
- •1. Динамические структуры данных
- •2. Динамические структуры данных. Линейные списки: Очередь, стек.
- •3. Динамические структуры данных. Деревья
- •4. Классы. Описание классов. Описание объектов. Указатель this.
- •5. Статические элементы класса. Статические поля. Статические методы.
- •6. Дружественная функция. Дружественный класс.
- •7. Деструкторы
- •8. Перегрузка операций. Перегрузка унарных операций
- •9. Перегрузка бинарных операций
- •10. Перегрузка операций присваивания
- •11. Перегрузка операции приведение типа
- •12. Наследование. Ключи доступа. Простое наследование
- •13. Виртуальные методы. Алгоритмы позднего связывания
- •Механизм позднего связывания
- •14. Множественное наследование
- •15. Создание произвольного класса на базе основного
- •16. Обработка исключительных ситуаций. Общий механизм обработки исключений
- •17. Синтаксис исключений. Перехват исключений
- •18. Список исключений функций
- •19. Иерархии исключений
- •20. Исключения в конструкторах и деструкторах
- •21. Преобразование типов. Неявные преобразования типов
- •22. Преобразования типов в выражениях
- •23. Явные преобразования типов. Операция const_cast. Операция dynamic_cast
- •Операция const_cast
- •Операция dynamic_cast
- •24. Повышающее преобразование. Понижающее преобразование
- •25. Преобразование ссылок. Перекрестное преобразование
- •26. Преобразование типа на стадии компиляции. Операция static_cast. Операция reinterpret_cast
- •27. Динамическое определение типа. Операция type_id. Класс type_info
- •28. Потоки. Стандартные потоки. Объекты заголовочного файла iostream
- •29. Правила ввода и вывода величин
- •30. Форматирование данных. Флаги и форматирующие методы. Манипуляторы
- •31. Методы обмена с потоками. Класс iоstream
- •32. Ошибки потоков
- •33. Базовый класс ios. Методы и операции класса ios
- •34. Файловые потоки. Классы для работы с файлами: ifstream, ofstream, fstream
- •35. Строковые потоки. Базовые классы строковых потоков: istringstream, ostringstream, stringstream
- •36. Потоки и типы, определенные пользователем
- •37. Строки. Конструкторы и присваивание строк
- •38. Создание объекта string. Операция присваивания строк
- •39. Операции класса string
- •40. Функции работы со строками. Присваивание и добавление частей строк
- •41. Функции работы со строками. Преобразование строк. Поиск подстрок. Сравнение частей строк
- •42. Функции работы со строками. Получение характеристик строк
- •43. Обратные итераторы. Итераторы вставки. Потоковые итераторы
- •Обратные итераторы
- •Итераторы вставки
- •Потоковые итераторы
- •44. Функциональные объекты. Арифметические функциональные объекты
Потоковые итераторы
Потоковые итераторы введены для того, чтобы стандартные алгоритмы могли непосредственно использовать потоки ввода/вывода.
Определено два шаблона классов потоковых итераторов: итератор входного потока
istream_iterator и итератор выходного потока ostream_iterator.
Итератор входного потока читает элементы из потока, для которого он был создан, после чего к ним можно обращаться обычным для итератора образом, то есть через операцию разадресации.
Например, для чтения целого числа из файла с именем temp можно использовать следующий фрагмент:
istream in('temp");
istream_iterator<int> i(in);
int buf = * 1;
Итератор выходного потока записывает с помощью операции « элементы в выходной поток, для которого он был сконструирован. Если вторым аргументом конструктора была строка символов, она выводится после каждого выводимого значения:
ostream_iterator<int> os(cout, "кг");
*os = 100; // Будет выведено: 100 кг
++0S; *os = 2; // Будет выведено: 2 кг
44. Функциональные объекты. Арифметические функциональные объекты
Функциональным объектом называется класс, в котором определена операция вызова функции.
Стандартная библиотека предоставляет множество функциональных объектов, необходимых для ее эффективного использования и расширения. Они описаны в заголовочном файле <functional>. Среди этих объектов можно выделить объекты, возвращающие значения типа bool. Такие объекты называются предикатами. Предикатом называется также и обычная функция, возвращающая bool.
В качестве базовых классов, которые вводят стандартные имена для типов аргументов, в библиотеке определены шаблоны унарной и бинарной функции.
Стандартная библиотека содержит описание нескольких типов адаптеров:
связыватели для использования функционального объекта с двумя аргументами как объекта с одним аргументом;
отрицатели для инверсии значения предиката;
адаптеры указателей на функцию;
адаптеры методов для использования методов в алгоритмах.
В стандартной библиотеке определены шаблоны функциональных объектов для всех арифметических операций, определенных в языке C++:
Имя |
Тип |
Результат |
plus |
бинарный |
x+ у |
minus |
бинарный |
x - у |
multiplies |
бинарный |
x * у |
divides |
бинарный |
x / у |
modulus |
бинарный |
x % у |
negate |
унарный |
- x |