Бьярне Страуструп Программирование Принципы и практика использования C++ Исправленное издание

Оглавление

Предисловие

Обращение к читателям

Глава 1. Компьютеры, люди и программирование

  1.1. Введение

  1.2. Программное обеспечение

  1.3. Люди

  1.4. Компьютерные науки

  1.5. Компьютеры повсюду

   1.5.1. С экранами и без них

   1.5.2. Кораблестроение

   1.5.3. Телекоммуникации

   1.5.4. Медицина

   1.5.5. Информация

   1.5.6. Вид сверху

  1.5.7. И что?

1.6. Идеалы программистов

Часть I. Основы

Глава 2. Hello, World!

  2.1. Программы

  2.2. Классическая первая программа

  2.3. Компиляция

  2.4. Редактирование связей

  2.5. Среды программирования

Глава 3. Объекты, типы и значения

  3.1. Ввод

  3.2. Переменные

  3.3. Ввод и тип

  3.4. Операции и операторы

  3.5. Присваивание и инициализация

   3.5.1. Пример: выявление повторяющихся слов

  3.6. Составные операторы присваивания

   3.6.1. Пример: поиск повторяющихся слов

  3.7. Имена

  3.8. Типы и объекты

  3.9. Типовая безопасность

   3.9.1. Безопасные преобразования

   3.9.2. Опасные преобразования

Глава 4. Вычисления

  4.1. Вычисления

  4.2. Цели и средства

  4.3. Выражения

   4.3.1. Константные выражения

   4.3.2. Операторы

   4.3.3. Преобразования

  4.4. Инструкции

   4.4.1. Инструкции выбора

    4.4.1.1. Инструкции if

    4.4.1.2. Инструкции switch

    4.4.1.3. Технические подробности инструкции switch

   4.4.2. Итерация

    4.4.2.1. Инструкции while

    4.4.2.2. Блоки

    4.4.2.3. Инструкции for

  4.5. Функции

   4.5.1. Зачем нужны функции

   4.5.2. Объявления функций

  4.6. Вектор

   4.6.1. Увеличение вектора

   4.6.2. Числовой пример

   4.6.3. Текстовый пример

  4.7. Свойства языка

Глава 5. Ошибки

  5.1. Введение

  5.2. Источники ошибок

  5.3. Ошибки во время компиляции

   5.3.1. Синтаксические ошибки

   5.3.2. Ошибки, связанные с типами

   5.3.3. Не ошибки

  5.4. Ошибки во время редактирования связей

  5.5. Ошибки во время выполнения программы

   5.5.1. Обработка ошибок в вызывающем модуле

   5.5.2. Обработка ошибок в вызываемом модуле

   5.5.3. Сообщения об ошибках

  5.6. Исключения

   5.6.1. Неправильные аргументы

   5.6.2. Ошибки, связанные с диапазоном

   5.6.3. Неправильный ввод

   5.6.4. Суживающие преобразования

  5.7. Логические ошибки

  5.8. Оценка

  5.9. Отладка

   5.9.1. Практические советы по отладке

  5.10. Пред- и постусловия

   5.10.1. Постусловия

  5.11. Тестирование

Глава 6. Создание программ

  6.1. Задача

  6.2. Размышления над задачей

   6.2.1. Стадии разработки программы

   6.2.2. Стратегия

  6.3. Назад к калькулятору!

   6.3.1. Первое приближение

   6.3.2. Лексемы

   6.3.3. Реализация лексем

   6.3.4. Использование лексем

   6.3.5. Назад к школьной доске!

  6.4. Грамматики

   6.4.1. Отступление: грамматика английского языка

   6.4.2. Запись грамматики

  6.5. Превращение грамматики в программу

   6.5.1. Реализация грамматических правил

   6.5.2. Выражения

    6.5.2.1. Выражения: первая попытка

    6.5.2.2. Выражения: вторая попытка

    6.5.2.3. Выражения: третья попытка (удачная)

   6.5.3. Термы

   6.5.4. Первичные выражения

  6.6. Испытание первой версии

  6.7. Испытание второй версии

  6.8. Потоки лексем

   6.8.1. Реализация класса Token_stream

   6.8.2. Считывание лексем

   6.8.3. Считывание чисел

  6.9. Структура программы

Глава 7. Завершение программы

  7.1. Введение

  7.2. Ввод и вывод

  7.3. Обработка ошибок

  7.4. Отрицательные числа

  7.5. Остаток от деления: %

  7.6. Приведение кода в порядок

   7.6.1. Символические константы

   7.6.2. Использование функций

   7.6.3. Расположение кода

   7.6.4. Комментарии

  7.7. Исправление ошибок

  7.8. Переменные

   7.8.1. Переменные и определения

   7.8.2. Использование имен

   7.8.3. Предопределенные имена

   7.8.4. Все?

Глава 8. Технические детали: функции и прочее

  8.1. Технические детали

  8.2. Объявления и определения

   8.2.1. Виды объявлений

   8.2.2. Объявления переменных и констант

   8.2.3. Инициализация по умолчанию

  8.3. Заголовочные файлы

  8.4. Область видимости

  8.5. Вызов функции и возврат значения

   8.5.1. Объявление аргументов и тип возвращаемого значения

   8.5.2. Возврат значения

   8.5.3. Передача параметров по значению

   8.5.4. Передача параметров по константной ссылке

   8.5.5. Передача параметров по ссылке

   8.5.6. Сравнение механизмов передачи параметров по значению и по ссылке

   8.5.7. Проверка аргументов и преобразование типов

   8.5.8. Реализация вызова функции

  8.6. Порядок вычислений

   8.6.1. Вычисление выражения

   8.6.2. Глобальная инициализация

  8.7. Пространства имен

   8.7.1. Объявления using и директивы using

Глава 9. Технические детали: классы и прочее

  9.1. Типы, определенные пользователем

  9.2. Классы и члены класса

  9.3. Интерфейс и реализация

  9.4. Разработка класса

   9.4.1. Структуры и функции

   9.4.2. Функции-члены и конструкторы

   9.4.3. Скрываем детали

   9.4.4. Определение функций-членов

   9.4.5. Ссылка на текущий объект

   9.4.6. Сообщения об ошибках

  9.5. Перечисления

  9.6. Перегрузка операторов

  9.7. Интерфейсы классов

   9.7.1. Типы аргументов

   9.7.2. Копирование

   9.7.3. Конструкторы по умолчанию

   9.7.4. Константные функции-члены

   9.7.5. Члены и вспомогательные функции

  9.8. Класс Date

Часть II Ввод и вывод

Глава 10 Потоки ввода и вывода

  10.1. Ввод и вывод

  10.2. Модель потока ввода-вывода

  10.3. Файлы

  10.4. Открытие файла

  10.5. Чтение и запись файла

  10.6. Обработка ошибок ввода-вывода

  10.7. Считывание отдельного значения

   10.7.1. Разделение задачи на управляемые части

   10.7.2. Отделение диалога от функции

  10.8. Операторы вывода, определенные пользователем

  10.9. Операторы ввода, определенные пользователем

  10.10. Стандартный цикл ввода

  10.11. Чтение структурированного файла

   10.11.1. Представление в памяти

   10.11.2. Считывание структурированных значений

   10.11.3. Изменение представления

Глава 11 Настройка ввода и вывода

  11.1. Регулярность и нерегулярность

  11.2. Форматирование вывода

   11.2.1. Вывод целых чисел

   11.2.2. Ввод целых чисел

   11.2.3. Вывод чисел с плавающей точкой

   11.2.4. Точность

   11.2.5. Поля

  11.3. Открытие файла и позиционирование

   11.3.1. Режимы открытия файлов

   11.3.2. Бинарные файлы

   11.3.3. Позиционирование в файлах

  11.4. Потоки строк

  11.5. Ввод, ориентированный на строки

  11.6. Классификация символов

  11.7. Использование нестандартных разделителей

  11.8. И еще много чего

Глава 12 Вывод на экран

  12.1. Почему графика?

  12.2. Вывод на дисплей

  12.3. Первый пример

  12.4. Использование библиотеки графического пользовательского интерфейса

  12.5. Координаты

  12.6. Класс Shape

  12.7. Использование графических примитивов

   12.7.1. Графические заголовочные файлы и функция main

   12.7.2. Почти пустое окно

   12.7.3. Оси координат

   12.7.4. График функции

   12.7.5. Многоугольники

   12.7.6. Прямоугольник

   12.7.7. Заполнение

   12.7.8. Текст

   12.7.9. Изображения

   12.7.10. И многое другое

  12.8. Запуск программы

   12.8.1. Исходные файлы

Глава 13 Графические классы

  13.1. Обзор графических классов

  13.2. Классы Point и Line

  13.3. Класс Lines

  13.4. Класс Color

  13.5. Класс Line_style

  13.6. Класс Open_polyline

  13.7. Класс Closed_polyline

  13.8. Класс Polygon

  13.9. Класс Rectangle

  13.10. Управление неименованными объектами

  13.11. Класс Text

  13.12. Класс Circle

  13.13. Класс Ellipse

  13.14. Класс Marked_polyline

  13.15. Класс Marks

  13.16. Класс Mark

  13.17. Класс Image

Глава 14 Проектирование графических классов

  14.1. Принципы проектирования

   14.1.1. Типы

   14.1.2. Операции

   14.1.3. Именование

   14.1.4. Изменяемость

  14.2. Класс Shape

   14.2.1. Абстрактный класс

   14.2.2. Управление доступом

   14.2.3. Рисование фигур

   14.2.4. Копирование и изменчивость

  14.3. Базовые и производные классы

   14.3.1. Схема объекта

   14.3.2. Вывод классов и определение виртуальных функций

   14.3.3. Замещение

   14.3.4. Доступ

   14.3.5. Чисто виртуальные функции

  14.4. Преимущества объектно-ориентированного программирования

Глава 15 Графические функции и данные

  15.1. Введение

  15.2. Построение простых графиков

  15.3. Класс Function

   15.3.1. Аргументы по умолчанию

   15.3.2. Новые примеры

  15.4. Оси

  15.5. Аппроксимация

  15.6. Графические данные

   15.6.1. Чтение файла

   15.6.2. Общая схема

   15.6.3. Масштабирование данных

   15.6.4. Построение графика

Глава 16 Графические пользовательские интерфейсы

  16.1. Альтернативы пользовательского интерфейса

  16.2. Кнопка Next

  16.3. Простое окно

   16.3.1. Функции обратного вызова

   16.3.2. Цикл ожидания

  16.4. Класс Button и другие разновидности класса Widget

   16.4.1. Класс Widget

   16.4.2. Класс Button

   16.4.3. Классы In_box и Out_box

   16.4.4. Класс Menu

  16.5. Пример

  16.6. Инверсия управления

  16.7. Добавление меню

  16.8. Отладка программы графического пользовательского интерфейса

Часть III Данные и алгоритмы

Глава 17 Векторы и свободная память

  17.1. Введение

  17.2. Основы

  17.3. Память, адреса и указатели

   17.3.1. Оператор sizeof

  17.4. Свободная память и указатели

   17.4.1. Размещение в свободной памяти

   17.4.2. Доступ с помощью указателей

   17.4.3. Диапазоны

   17.4.4. Инициализация

   17.4.5. Нулевой указатель

   17.4.6. Освобождение свободной памяти

  17.5. Деструкторы

   17.5.1. Обобщенные указатели

   17.5.2. Деструкторы и свободная память

  17.6. Доступ к элементам

  17.7. Указатели на объекты класса

  17.8. Путаница с типами: void* и операторы приведения типов

  17.9. Указатели и ссылки

   17.9.1. Указатели и ссылки как параметры функций

   17.9.2. Указатели, ссылки и наследование

   17.9.3. Пример: списки

   17.9.4. Операции над списками

   17.9.5. Использование списков

   17.10. Указатель this

   17.10.1. Еще раз об использовании списков

Глава 18 Векторы и массивы

  18.1. Введение

  18.2. Копирование

   18.2.1. Конструкторы копирования

   18.2.2. Копирующее присваивание

   18.2.3. Терминология, связанная с копированием

  18.3. Основные операции

   18.3.1. Явные конструкторы

   18.3.2. Отладка конструкторов и деструкторов

  18.4. Доступ к элементам вектора

   18.4.1. Перегрузка ключевого слова const

  18.5. Массивы

   18.5.1. Указатели на элементы массива

   18.5.2. Указатели и массивы

   18.5.3. Инициализация массива

   18.5.4. Проблемы с указателями

  18.6. Примеры: палиндром

   18.6.1. Палиндромы, созданные с помощью класса string

   18.6.2. Палиндромы, созданные с помощью массива

   18.6.3. Палиндромы, созданные с помощью указателей

Глава 19 Векторы, шаблоны и исключения

  19.1. Проблемы

  19.2. Изменение размера

   19.2.1. Представление

   19.2.2. Функции reserve и capacity

   19.2.3. Функция resize

   19.2.4. Функция push_back

   19.2.5. Присваивание

   19.2.6. Предыдущая версия класса vector

  19.3. Шаблоны

   19.3.1. Типы как шаблонные параметры

   19.3.2. Обобщенное программирование

   19.3.3. Контейнеры и наследование

   19.3.4. Целые типы как шаблонные параметры

   19.3.5. Вывод шаблонных аргументов

   19.3.6. Обобщение класса vector

  19.4. Проверка диапазона и исключения

   19.4.1. Примечание: вопросы проектирования

    19.4.1.1. Совместимость

    19.4.1.2. Эффективность

    19.4.1.3. Ограничения

    19.4.1.4. Необязательная проверка

   19.4.2. Признание: макрос

  19.5. Ресурсы и исключения

   19.5.1. Потенциальные проблемы управления ресурсами

   19.5.2. Получение ресурсов — это инициализация

   19.5.3. Гарантии

   19.5.4. Класс auto_ptr

   19.5.5. Принцип RAII для класса vector

Глава 20 Контейнеры и итераторы

  20.1. Хранение и обработка данных

   20.1.1. Работа с данными

   20.1.2. Обобщение кода

  20.2. Принципы библиотеки STL

  20.3. Последовательности и итераторы

   20.3.1. Вернемся к примерам

  20.4. Связанные списки

   20.4.1. Операции над списками

   20.4.2. Итерация

  20.5. Еще одно обобщение класса vector

  20.6. Пример: простой текстовый редактор

   20.6.1. Строки

   20.6.2. Итерация

  20.7. Классы vector, list и string

   20.7.1. Операции insert и erase

   20.8. Адаптация нашего класса vector к библиотеке STL

  20.9. Адаптация встроенных массивов к библиотеке STL

  20.10. Обзор контейнеров

   20.10.1. Категории итераторов

Глава 21 Алгоритмы и ассоциативные массивы

  21.1. Алгоритмы стандартной библиотеки

  21.2. Простейший алгоритм: find()

   21.2.1. Примеры использования обобщенных алгоритмов

  21.3. Универсальный алгоритм поиска: find_if()

  21.4. Объекты-функции

   21.4.1. Абстрактная точка зрения на функции-объекты

   21.4.2. Предикаты на членах класса

  21.5. Численные алгоритмы

   21.5.1. Алгоритм accumulate()

   21.5.2. Обобщение алгоритма accumulate()

   21.5.3. Алгоритм inner_product

   21.5.4. Обобщение алгоритма inner_product()

  21.6. Ассоциативные контейнеры

   21.6.1. Ассоциативные массивы

   21.6.2. Обзор ассоциативных массивов

   21.6.3. Еще один пример ассоциативного массив

   21.6.4. Алгоритм unordered_map()

   21.6.5. Множества

  21.7. Копирование

   21.7.1. Алгоритм copy()

   21.7.2. Итераторы потоков

   21.7.3. Использование класса set для поддержания порядка

   21.7.4. Алгоритм copy_if()

  21.8. Сортировка и поиск

Часть IV Дополнительные темы

Глава 22 Идеалы и история

  22.1. История, идеалы и профессионализм

   22.1.1. Цели и философия языка программирования

   22.1.2. Идеалы программирования

    22.1.2.1. Чего мы хотим?

    22.1.2.2. Общие подходы

    22.1.2.3. Непосредственное выражение идей

    22.1.2.4. Уровень абстракции

    22.1.2.5. Модульность

    22.1.2.6. Логичность и минимализм

   22.1.3. Стили и парадигмы

  22.2. Обзор истории языков программирования

   22.2.1. Первые языки программирования

   22.2.2. Корни современных языков программирования

    22.2.2.1. Язык программирования Fortran

    22.2.2.2. Язык программирования COBOL

    22.2.2.3. Язык программирования Lisp

   22.2.3. Семейство языков Algol

    22.2.3.1. Язык программирования Algol-60

    22.2.3.2. Язык программирования Pascal

    22.2.3.3. Язык программирования Ada

   22.2.4. Язык программирования Simula

   22.2.5. Язык программирования С

   22.2.6. Язык программирования С++

   22.2.7. Современное состояние дел

   22.2.8. Источники информации

Глава 23 Обработка текста

  23.1. Текст

  23.2. Строки

  23.3. Потоки ввода-вывода

  23.4. Ассоциативные контейнеры

   23.4.1. Детали реализации

  23.5. Проблема

  23.6. Идея регулярных выражений

  23.7. Поиск с помощью регулярных выражений

  23.8. Синтаксис регулярных выражений

   23.8.1. Символы и специальные символы

   23.8.2. Классы символов

   23.8.3. Повторения

   23.8.4. Группировка

   23.8.5. Варианты

   23.8.6. Наборы символов и диапазоны

   23.8.7. Ошибки в регулярных выражениях

  23.9. Сравнение регулярных выражений

  23.10. Ссылки

Глава 24 Числа

  24.1. Введение

  24.2. Размер, точность и переполнение

   24.2.1. Пределы числовых диапазонов

  24.3. Массивы

  24.4. Многомерные массивы в стиле языка С

  24.5. Библиотека Matrix

   24.5.1. Размерности и доступ

   24.5.2. Одномерный объект класса Matrix

   24.5.3. Двумерный объект класса Matrix

   24.5.4. Ввод-вывод объектов класса Matrix

   24.5.5. Трехмерный объект класса Matrix

  24.6. Пример: решение систем линейных уравнений

   24.6.1. Классическое исключение Гаусса

   24.6.2. Выбор ведущего элемента

   24.6.3. Тестирование

  24.7. Случайные числа

  24.8. Стандартные математические функции

  24.9. Комплексные числа

  24.10. Ссылки

Глава 25 Программирование встроенных систем

  25.1. Встроенные системы

  25.2. Основные понятия

   25.2.1. Предсказуемость

   25.2.2. Принципы

   25.2.3. Сохранение работоспособности после сбоя

  25.3. Управление памятью

   25.3.1. Проблемы со свободной памятью

   25.3.2. Альтернатива универсальной свободной памяти

   25.3.3. Пример пула

   25.3.4. Пример стека

  25.4. Адреса, указатели и массивы

   25.4.1. Непроверяемые преобразования

   25.4.2. Проблема: дисфункциональный интерфейс

   25.4.3. Решение: интерфейсный класс

   25.4.4. Наследование и контейнеры

  25.5. Биты, байты и слова

   25.5.1. Операции с битами и байтами

   25.5.2. Класс bitset

   25.5.3. Целые числа со знаком и без знака

   25.5.4. Манипулирование битами

   25.5.5. Битовые поля

   25.5.6. Пример: простое шифрование

  25.6. Стандарты программирования

   25.6.1. Каким должен быть стандарт программирования?

   25.6.2. Примеры правил

   25.6.3. Реальные стандарты программирования

Глава 26 Тестирование

  26.1. Чего мы хотим

   26.1.1. Предостережение

  26.2. Доказательства

  26.3. Тестирование

   26.3.1. Регрессивные тесты

   26.3.2. Модульные тесты

    26.3.2.1. Стратегия тестирования

    26.3.2.2. Схема простого теста

    26.3.2.3. Случайные последовательности

   26.3.3. Алгоритмы и не алгоритмы

    26.3.3.1. Зависимости

    26.3.3.2. Управление ресурсами

    26.3.3.3. Циклы

    26.3.3.4. Ветвление

   26.3.4. Системные тесты

    26.3.4.1. Зависимости

   26.3.5. Тестирование классов

   26.3.6. Поиск предположений, которые не выполняются

  26.4. Проектирование с учетом тестирования

  26.5. Отладка

  26.6. Производительность

   26.6.1. Измерение времени

  26.7. Ссылки

Глава 27 Язык программирования С

  27.1. Языки С и С++: братья

   27.1.1. Совместимость языков С и С++

   27.1.2. Свойства языка С++, которых нет в языке С

   27.1.3. Стандартная библиотека языка С

  27.2. Функции

   27.2.1. Отсутствие перегрузки имен функций

   27.2.2. Проверка типов аргументов функций

   27.2.3. Определения функций

   27.2.4. Вызов функций, написанных на языке С, из программы на языке С++, и наоборот

   27.2.5. Указатели на функции

  27.3. Второстепенные языковые различия

   27.3.1. Дескриптор пространства имен struct

   27.3.2. Ключевые слова

   27.3.3. Определения

   27.3.4. Приведение типов в стиле языка С

   27.3.5. Преобразование указателей типа void*

   27.3.6. Перечисление

   27.3.7. Пространства имен

  27.4. Свободная память

  27.5. Строки в стиле языка С

   27.5.1. Строки в стиле языка С и ключевое слово const

   27.5.2. Операции над байтами

   27.5.3. Пример: функция strcpy()

   27.5.4. Вопросы стиля

  27.6. Ввод-вывод: заголовок stdio

   27.6.1. Вывод

   27.6.2. Ввод

   27.6.3. Файлы

  27.7. Константы и макросы

  27.8. Макросы

   27.8.1. Макросы, похожие на функции

   27.8.2. Синтаксис макросов

   27.8.3. Условная компиляция

  27.9. Пример: интрузивные контейнеры

Часть V Приложения

Приложение А Краткий обзор языка

  A.1. Общие сведения

   A.1.1. Терминология

   A.1.2. Старт и завершение программы

   A.1.3. Комментарии

  A.2. Литералы

   A.2.1. Целочисленные литералы

    A.2.1.1. Числовые системы

   A.2.2. Литералы с плавающей точкой

   A.2.3. Булевы литералы

   A.2.4. Символьные литералы

   A.2.5. Строковые литералы

   A.2.6. Указательные литералы

  A.3. Идентификаторы

   A.3.1. Указательные литералы

  A.4. Область видимости, класс памяти и время жизни

   A.4.1. Область видимости

   A.4.2. Класс памяти

   A.4.3. Время жизни

  A.5. Выражения

   A.5.1. Операторы, определенные пользователем

   A.5.2. Неявное преобразование типа

    A.5.2.1. Продвижения

    A.5.2.2. Преобразования

    A.5.2.3. Преобразования, определенные пользователем

   A.5.3. Константные выражения

   A.5.4. Оператор sizeof

   A.5.5. Логические выражения

   A.5.6. Операторы new и delete

   A.5.7. Операторы приведения

  A.6. Инструкции

  A.7. Объявления

   A.7.1. Определения

  A.8. Встроенные типы

   A.8.1. Указатели

   A.8.2. Массивы

   A.8.3. Ссылки

  A.9. Функции

   A.9.1. Разрешение перегрузки

   A.9.2. Аргументы по умолчанию

   A.9.3. Неопределенные аргументы

   A.9.4. Спецификации связей

  A.10. Типы, определенные пользователем

   A.10.1. Перегрузка операций

  A.11. Перечисления

  A.12. Классы

   A.12.1. Доступ к членам класса

    A.12.1.1. Указатель this

    A.12.1.2. Друзья

   A.12.2. Определения членов класса

   A.12.3. Создание, уничтожение и копирование

    A.12.3.1. Деструкторы

    A.12.3.2. Копирование

   A.12.4. Производные классы

    A.12.4.1. Виртуальные функции

    A.12.4.2. Абстрактные классы

    A.12.4.3. Сгенерированные операции

   A.12.5. Битовые поля

   A.12.6. Объединения

  A.13. Шаблоны

   A.13.1. Шаблонные аргументы

   A.13.2. Конкретизация шаблонов

   A.13.3. Шаблонные типы членов-классов

  A.14. Исключения

  A.15. Пространства имен

  A.16. Альтернативные имена

  A.17. Директивы препроцессора

   A.17.1. Директива #include

   A.17.2. Директива #define

Приложение Б Обзор стандартной библиотеки

  Б.1. Обзор

   Б.1.1. Заголовочные файлы

   Б.1.2. Пространство имен std

   Б.1.3. Стиль описания

  Б.2. Обработка ошибок

   Б.2.1. Исключения

  Б.3. Итераторы

   Б.3.1. Модель итераторов

   Б.3.2. Категории итераторов

  Б.4. Контейнеры

   Б.4.1. Обзор

   Б.4.2. Типы членов

   Б.4.3. Конструкторы, деструкторы и присваивания

   Б.4.4. Итераторы

   Б.4.5. Доступ к элементам

   Б.4.6. Операции над стеком и двусторонней очередью

   Б.4.7. Операции над списком

   Б.4.8. Размер и емкость

   Б.4.9. Другие операции

   Б.4.10. Операции над ассоциативными контейнерами

  Б.5. Алгоритмы

   Б.5.1. Немодицифирующие алгоритмы для последовательностей

   Б.5.2. Алгоритмы, модифицирующие последовательности

   Б.5.3. Вспомогательные алгоритмы

   Б.5.4. Сортировка и поиск

   Б.5.5. Алгоритмы для множеств

   Б.5.6. Кучи

   Б.5.7. Перестановки

   Б.5.8. Функции min и max

   Б.6. Утилиты библиотеки STL

   Б.6.1. Вставки

   Б.6.2. Объекты-функции

   Б.6.3. Класс pair

  Б.7. Потоки ввода-вывода

   Б.7.1. Иерархия потоков ввода-вывода

   Б.7.2. Обработка ошибок

   Б.7.3. Операции ввода

   Б.7.4. Операции вывода

   Б.7.5. Форматирование

   Б.7.6. Стандартные манипуляторы

  Б.8. Манипуляции строками

   Б.8.1. Классификация символов

   Б.8.2. Строки

   Б.8.3. Сравнение регулярных выражений

  Б.9. Численные методы

   Б.9.1. Предельные значения

   Б.9.2. Стандартные математические функции

   Б.9.3. Комплексные числа

   Б.9.4. Класс valarray

   Б.9.5. Обобщенные числовые алгоритмы

  Б.10. Функции стандартной библиотеки языка С

   Б.10.1. Файлы

   Б.10.2. Семейство функций printf()

   Б.10.3. Строки в стиле языка С

   Б.10.4. Память

   Б.10.5. Дата и время

   Б.10.6. Другие функции

  Б.11. Другие библиотеки

Приложение В Начало работы со средой разработки Visual Studio

  В.1. Запуск программы

  В.2. Инсталляция среды разработки Visual Studio

  В.3. Создание и запуск программ

   В.3.1. Создание нового проекта

   В.3.2. Используйте заголовочный файл std_lib_facilities.h

   В.3.3. Добавление в проект исходного файла на языке С++

   В.3.4. Ввод исходного кода

   В.3.5. Создание исполняемого файла

   В.3.6. Выполнение программы

   В.3.7. Сохранение программы

  В.4. Что дальше

Приложение Г Инсталляция библиотеки FLTK

  Г.1. Введение

  Г.2. Загрузка библиотеки FLTK

  Г.3. Инсталляция библиотеки FLTK

  Г.4. Использование библиотеки FLTK в среде Visual Studio

  Г.5. Как тестировать, если не все работает

Приложение Д Реализация графического пользовательского интерфейса

  Д.1. Реализация обратных вызовов

  Д.2. Реализация класса Widget

  Д.3. Реализация класса Window

  Д.4. Реализация класса Vector_ref

  Д.5. Пример: манипулирование объектами класса Widget

Глоссарий

Библиография

Загрузка...