Содержание
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Часть I. Структурное программирование . . . . . . . . . . . . . . . . . . . 13
Глава 1. Базовые средства языка C++ . . . . . . . . . . . . . . . . . . . . . 15
Состав языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Алфавит языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Идентификаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Ключевые слова. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Знаки операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Типы данных С++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Концепция типа данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Основные типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Структура программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Переменные и выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Выражения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Базовые конструкции структурного программирования . . . . . . . . . . . . . . . . 38
Оператор «выражение» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Операторы ветвления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Операторы цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Операторы передачи управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Указатели и массивы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Указатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Ссылки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Типы данных, определяемые пользователем . . . . . . . . . . . . . . . . . . . . . . . 65
Переименование типов (typedef) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Перечисления (enum) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Структуры (struct). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Объединения (union) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Глава 2. Модульное программирование . . . . . . . . . . . . . . . . . . . . 72
Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Объявление и определение функций . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Глобальные переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Возвращаемое значение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Параметры функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Рекурсивные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Перегрузка функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Шаблоны функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Функция main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Функции стандартной библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Директивы препроцессора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Директива #include. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Директива #define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Директивы условной компиляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Директива #undef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Области действия и пространства имен . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Внешние объявления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Поименованные области . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Глава 3. Технология создания программ . . . . . . . . . . . . . . . . . . . 102
Кодирование и документирование программы . . . . . . . . . . . . . . . . . . . . . 102
Проектирование и тестирование программы . . . . . . . . . . . . . . . . . . . . . . 109
Динамические структуры данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Линейные списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Стеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Очереди. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Бинарные деревья . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Реализация динамических структур с помощью массивов . . . . . . . . . . . . 126
Упражнения к части I. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Циклические вычислительные процессы . . . . . . . . . . . . . . . . . . . . . . . 128
Одномерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Двумерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Одномерные и двумерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Указатели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Простейшие функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Функции и файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Функции библиотеки для работы со строками и символами . . . . . . . . . . . 159
Шаблоны функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Модульное программирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Динамические структуры данных . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Содержание 5
Часть II. Объектноориентированное программирование. . . . . . . . . 173
Глава 4. Классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Описание класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Описание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Указатель this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Конструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Конструктор копирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Статические элементы класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Статические поля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Статические методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Дружественные функции и классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Дружественная функция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Дружественный класс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Деструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Перегрузка операций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Перегрузка унарных операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Перегрузка бинарных операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Перегрузка операции присваивания . . . . . . . . . . . . . . . . . . . . . . . . . 191
Перегрузка операций new и delete . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Перегрузка операции приведения типа . . . . . . . . . . . . . . . . . . . . . . . . 195
Перегрузка операции вызова функции . . . . . . . . . . . . . . . . . . . . . . . . 195
Перегрузка операции индексирования . . . . . . . . . . . . . . . . . . . . . . . . 196
Указатели на элементы классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Рекомендации по составу класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Глава 5. Наследование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Ключи доступа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Простое наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Виртуальные методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Механизм позднего связывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Абстрактные классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Множественное наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Отличия структур и объединений от классов. . . . . . . . . . . . . . . . . . . . . . . 210
Глава 6. Шаблоны классов . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Создание шаблонов классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Использование шаблонов классов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Специализация шаблонов классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Достоинства и недостатки шаблонов . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Глава 7. Обработка исключительных ситуаций . . . . . . . . . . . . . . . 222
Общий механизм обработки исключений. . . . . . . . . . . . . . . . . . . . . . . . . 223
Синтаксис исключений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6 Содержание
Перехват исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Список исключений функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Исключения в конструкторах и деструкторах . . . . . . . . . . . . . . . . . . . . . . 228
Иерархии исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Глава 8. Преобразования типов . . . . . . . . . . . . . . . . . . . . . . . . 231
Операция приведения типов в стиле С . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Операция const_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Операция dynamic_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Повышающее преобразование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Понижающее преобразование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Преобразование ссылок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Перекрестное преобразование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Операция static_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Операция reinterpret_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Динамическое определение типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Глава 9. Рекомендации по программированию . . . . . . . . . . . . . . . 241
Упражнения к части II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Шаблоны классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Часть III. Стандартная библиотека. . . . . . . . . . . . . . . . . . . . . . . 263
Глава 10. Потоковые классы . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Стандартные потоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Форматирование данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Флаги и форматирующие методы . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Манипуляторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Методы обмена с потоками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Ошибки потоков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Файловые потоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Строковые потоки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Потоки и типы, определенные пользователем. . . . . . . . . . . . . . . . . . . . . . 284
Глава 11. Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Конструкторы и присваивание строк . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Содержание 7
Функции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Присваивание и добавление частей строк . . . . . . . . . . . . . . . . . . . . . . 288
Преобразования строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Поиск подстрок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Сравнение частей строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Получение характеристик строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Глава 12. Контейнерные классы . . . . . . . . . . . . . . . . . . . . . . . . 295
Последовательные контейнеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Векторы (vector) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Двусторонние очереди (deque). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Списки (list). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Стеки (stack) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Очереди (queue). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Очереди с приоритетами (priority_queue). . . . . . . . . . . . . . . . . . . . . . . 313
Ассоциативные контейнеры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Словари (map) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Словари с дубликатами (multimap). . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Множества (set) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Множества с дубликатами (multiset) . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Битовые множества (bitset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Пример использования контейнеров . . . . . . . . . . . . . . . . . . . . . . . . . 325
Глава 13. Итераторы и функциональные объекты . . . . . . . . . . . . . 328
Итераторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Обратные итераторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Итераторы вставки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Потоковые итераторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Функциональные объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Арифметические функциональные объекты . . . . . . . . . . . . . . . . . . . . . 335
Предикаты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Отрицатели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Связыватели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Адаптеры указателей на функции . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Адаптеры методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Глава 14. Алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Немодифицирующие операции с последовательностями. . . . . . . . . . . . . . . 344
adjacent_find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
count, count_if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
find, find_if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
find_first_of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
find_end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
for_each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
8 Содержание
mismatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
search, search_n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Модифицирующие операции с последовательностями . . . . . . . . . . . . . . . . 348
copy, copy_backward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
fill, fill_n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
generate, generate_n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
iter_swap, swap, swap_ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
random_shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
remove, remove_if, remove_copy, remove_copy_if . . . . . . . . . . . . . . . . . . 353
replace, replace_if, replace_copy, replace_copy_if . . . . . . . . . . . . . . . . . . 354
reverse, reverse_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
rotate, rotate_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
unique, unique_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Алгоритмы, связанные с сортировкой. . . . . . . . . . . . . . . . . . . . . . . . . . . 357
binary_search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
equal_range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
inplace_merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
lexicographical_compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
lower_bound, upper_bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
max, min. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
max_element, min_element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
next_permutation, prev_permutation. . . . . . . . . . . . . . . . . . . . . . . . . . . 361
nth_element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
partial_ sort, partial_sort_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
partition, stable_partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
sort, stable_sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Алгоритмы работы с множествами и пирамидами . . . . . . . . . . . . . . . . . . . 364
includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
set_intersection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
set_difference, set_symmetric_difference. . . . . . . . . . . . . . . . . . . . . . . . 366
set_union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Пример использования алгоритмов работы с множествами . . . . . . . . . . . 366
make_heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
pop_heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
push_heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
sort_heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Глава 15. Средства для численных расчетов . . . . . . . . . . . . . . . . 369
Обобщенные численные алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
accumulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
inner_product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
partial_sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
adjacent_difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Содержание 9
Класс valarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Вспомогательные классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Глава 16. Другие средства стандартной библиотеки . . . . . . . . . . . 378
Упражнения к части III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Послесловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Приложение 1. Операции языка С++ . . . . . . . . . . . . . . . . . . . . . 384
Приложение 2. Спецификации формата
для функций семейства printf . . . . . . . . . . . . . . . . 387
Приложение 3. Арифметические преобразования типов . . . . . . . . . 390
Приложение 4. Заголовочные файлы стандартной библиотеки . . . . . 391
Приложение 5. Константы, макросы и типы данных
стандартной библиотеки . . . . . . . . . . . . . . . . . . 394
Приложение 6. Функции стандартной библиотеки. . . . . . . . . . . . . 409
Состав заголовочных файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Алфавитный перечень функций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Приложение 7. Таблицы кодов ASCII . . . . . . . . . . . . . . . . . . . . . 447
Алфавитный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
10 Содержание