Глава 1. Компьютеры, люди и программирование
2.2. Классическая первая программа
Глава 3. Объекты, типы и значения
3.5. Присваивание и инициализация
3.5.1. Пример: выявление повторяющихся слов
3.6. Составные операторы присваивания
3.6.1. Пример: поиск повторяющихся слов
3.9.1. Безопасные преобразования
4.4.1.3. Технические подробности инструкции switch
5.3. Ошибки во время компиляции
5.3.2. Ошибки, связанные с типами
5.4. Ошибки во время редактирования связей
5.5. Ошибки во время выполнения программы
5.5.1. Обработка ошибок в вызывающем модуле
5.5.2. Обработка ошибок в вызываемом модуле
5.6.2. Ошибки, связанные с диапазоном
5.6.4. Суживающие преобразования
5.9.1. Практические советы по отладке
6.2.1. Стадии разработки программы
6.3.5. Назад к школьной доске!
6.4.1. Отступление: грамматика английского языка
6.5. Превращение грамматики в программу
6.5.1. Реализация грамматических правил
6.5.2.1. Выражения: первая попытка
6.5.2.2. Выражения: вторая попытка
6.5.2.3. Выражения: третья попытка (удачная)
6.8.1. Реализация класса Token_stream
7.6. Приведение кода в порядок
7.6.1. Символические константы
7.8.1. Переменные и определения
Глава 8. Технические детали: функции и прочее
8.2.2. Объявления переменных и констант
8.2.3. Инициализация по умолчанию
8.5. Вызов функции и возврат значения
8.5.1. Объявление аргументов и тип возвращаемого значения
8.5.3. Передача параметров по значению
8.5.4. Передача параметров по константной ссылке
8.5.5. Передача параметров по ссылке
8.5.6. Сравнение механизмов передачи параметров по значению и по ссылке
8.5.7. Проверка аргументов и преобразование типов
8.5.8. Реализация вызова функции
8.6.2. Глобальная инициализация
8.7.1. Объявления using и директивы using
Глава 9. Технические детали: классы и прочее
9.1. Типы, определенные пользователем
9.4.2. Функции-члены и конструкторы
9.4.4. Определение функций-членов
9.4.5. Ссылка на текущий объект
9.7.3. Конструкторы по умолчанию
9.7.4. Константные функции-члены
9.7.5. Члены и вспомогательные функции
Глава 10 Потоки ввода и вывода
10.2. Модель потока ввода-вывода
10.6. Обработка ошибок ввода-вывода
10.7. Считывание отдельного значения
10.7.1. Разделение задачи на управляемые части
10.7.2. Отделение диалога от функции
10.8. Операторы вывода, определенные пользователем
10.9. Операторы ввода, определенные пользователем
10.11. Чтение структурированного файла
10.11.1. Представление в памяти
10.11.2. Считывание структурированных значений
10.11.3. Изменение представления
Глава 11 Настройка ввода и вывода
11.1. Регулярность и нерегулярность
11.2.3. Вывод чисел с плавающей точкой
11.3. Открытие файла и позиционирование
11.3.1. Режимы открытия файлов
11.3.3. Позиционирование в файлах
11.5. Ввод, ориентированный на строки
11.7. Использование нестандартных разделителей
12.4. Использование библиотеки графического пользовательского интерфейса
12.7. Использование графических примитивов
12.7.1. Графические заголовочные файлы и функция main
13.1. Обзор графических классов
13.10. Управление неименованными объектами
Глава 14 Проектирование графических классов
14.2.4. Копирование и изменчивость
14.3. Базовые и производные классы
14.3.2. Вывод классов и определение виртуальных функций
14.3.5. Чисто виртуальные функции
14.4. Преимущества объектно-ориентированного программирования
Глава 15 Графические функции и данные
15.2. Построение простых графиков
15.3.1. Аргументы по умолчанию
15.6.3. Масштабирование данных
Глава 16 Графические пользовательские интерфейсы
16.1. Альтернативы пользовательского интерфейса
16.3.1. Функции обратного вызова
16.4. Класс Button и другие разновидности класса Widget
16.4.3. Классы In_box и Out_box
16.8. Отладка программы графического пользовательского интерфейса
Глава 17 Векторы и свободная память
17.3. Память, адреса и указатели
17.4. Свободная память и указатели
17.4.1. Размещение в свободной памяти
17.4.2. Доступ с помощью указателей
17.4.6. Освобождение свободной памяти
17.5.2. Деструкторы и свободная память
17.7. Указатели на объекты класса
17.8. Путаница с типами: void* и операторы приведения типов
17.9.1. Указатели и ссылки как параметры функций
17.9.2. Указатели, ссылки и наследование
17.10.1. Еще раз об использовании списков
18.2.1. Конструкторы копирования
18.2.2. Копирующее присваивание
18.2.3. Терминология, связанная с копированием
18.3.2. Отладка конструкторов и деструкторов
18.4. Доступ к элементам вектора
18.4.1. Перегрузка ключевого слова const
18.5.1. Указатели на элементы массива
18.5.4. Проблемы с указателями
18.6.1. Палиндромы, созданные с помощью класса string
18.6.2. Палиндромы, созданные с помощью массива
18.6.3. Палиндромы, созданные с помощью указателей
Глава 19 Векторы, шаблоны и исключения
19.2.2. Функции reserve и capacity
19.2.6. Предыдущая версия класса vector
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.4. Необязательная проверка
19.5.1. Потенциальные проблемы управления ресурсами
19.5.2. Получение ресурсов — это инициализация
19.5.5. Принцип RAII для класса vector
Глава 20 Контейнеры и итераторы
20.1. Хранение и обработка данных
20.3. Последовательности и итераторы
20.5. Еще одно обобщение класса vector
20.6. Пример: простой текстовый редактор
20.7. Классы vector, list и string
20.7.1. Операции insert и erase
20.8. Адаптация нашего класса vector к библиотеке STL
20.9. Адаптация встроенных массивов к библиотеке STL
Глава 21 Алгоритмы и ассоциативные массивы
21.1. Алгоритмы стандартной библиотеки
21.2. Простейший алгоритм: find()
21.2.1. Примеры использования обобщенных алгоритмов
21.3. Универсальный алгоритм поиска: find_if()
21.4.1. Абстрактная точка зрения на функции-объекты
21.4.2. Предикаты на членах класса
21.5.2. Обобщение алгоритма accumulate()
21.5.3. Алгоритм inner_product
21.5.4. Обобщение алгоритма inner_product()
21.6. Ассоциативные контейнеры
21.6.2. Обзор ассоциативных массивов
21.6.3. Еще один пример ассоциативного массив
21.6.4. Алгоритм unordered_map()
21.7.3. Использование класса set для поддержания порядка
22.1. История, идеалы и профессионализм
22.1.1. Цели и философия языка программирования
22.1.2. Идеалы программирования
22.1.2.3. Непосредственное выражение идей
22.1.2.6. Логичность и минимализм
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. Современное состояние дел
23.4. Ассоциативные контейнеры
23.6. Идея регулярных выражений
23.7. Поиск с помощью регулярных выражений
23.8. Синтаксис регулярных выражений
23.8.1. Символы и специальные символы
23.8.6. Наборы символов и диапазоны
23.8.7. Ошибки в регулярных выражениях
23.9. Сравнение регулярных выражений
24.2. Размер, точность и переполнение
24.2.1. Пределы числовых диапазонов
24.4. Многомерные массивы в стиле языка С
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.8. Стандартные математические функции
Глава 25 Программирование встроенных систем
25.2.3. Сохранение работоспособности после сбоя
25.3.1. Проблемы со свободной памятью
25.3.2. Альтернатива универсальной свободной памяти
25.4. Адреса, указатели и массивы
25.4.1. Непроверяемые преобразования
25.4.2. Проблема: дисфункциональный интерфейс
25.4.3. Решение: интерфейсный класс
25.4.4. Наследование и контейнеры
25.5.1. Операции с битами и байтами
25.5.3. Целые числа со знаком и без знака
25.5.4. Манипулирование битами
25.5.6. Пример: простое шифрование
25.6. Стандарты программирования
25.6.1. Каким должен быть стандарт программирования?
25.6.3. Реальные стандарты программирования
26.3.2.1. Стратегия тестирования
26.3.2.2. Схема простого теста
26.3.2.3. Случайные последовательности
26.3.3. Алгоритмы и не алгоритмы
26.3.3.2. Управление ресурсами
26.3.6. Поиск предположений, которые не выполняются
26.4. Проектирование с учетом тестирования
Глава 27 Язык программирования С
27.1.1. Совместимость языков С и С++
27.1.2. Свойства языка С++, которых нет в языке С
27.1.3. Стандартная библиотека языка С
27.2.1. Отсутствие перегрузки имен функций
27.2.2. Проверка типов аргументов функций
27.2.4. Вызов функций, написанных на языке С, из программы на языке С++, и наоборот
27.3. Второстепенные языковые различия
27.3.1. Дескриптор пространства имен struct
27.3.4. Приведение типов в стиле языка С
27.3.5. Преобразование указателей типа void*
27.5.1. Строки в стиле языка С и ключевое слово const
27.5.3. Пример: функция strcpy()
27.6. Ввод-вывод: заголовок stdio
27.8.1. Макросы, похожие на функции
27.9. Пример: интрузивные контейнеры
Приложение А Краткий обзор языка
A.1.2. Старт и завершение программы
A.2.2. Литералы с плавающей точкой
A.4. Область видимости, класс памяти и время жизни
A.5.1. Операторы, определенные пользователем
A.5.2. Неявное преобразование типа
A.5.2.3. Преобразования, определенные пользователем
A.9.3. Неопределенные аргументы
A.10. Типы, определенные пользователем
A.12.1. Доступ к членам класса
A.12.2. Определения членов класса
A.12.3. Создание, уничтожение и копирование
A.12.4.3. Сгенерированные операции
A.13.2. Конкретизация шаблонов
A.13.3. Шаблонные типы членов-классов
Приложение Б Обзор стандартной библиотеки
Б.4.3. Конструкторы, деструкторы и присваивания
Б.4.6. Операции над стеком и двусторонней очередью
Б.4.10. Операции над ассоциативными контейнерами
Б.5.1. Немодицифирующие алгоритмы для последовательностей
Б.5.2. Алгоритмы, модифицирующие последовательности
Б.5.3. Вспомогательные алгоритмы
Б.7.1. Иерархия потоков ввода-вывода
Б.7.6. Стандартные манипуляторы
Б.8.3. Сравнение регулярных выражений
Б.9.2. Стандартные математические функции
Б.9.5. Обобщенные числовые алгоритмы
Б.10. Функции стандартной библиотеки языка С
Б.10.2. Семейство функций printf()
Б.10.3. Строки в стиле языка С
Приложение В Начало работы со средой разработки Visual Studio
В.2. Инсталляция среды разработки Visual Studio
В.3. Создание и запуск программ
В.3.1. Создание нового проекта
В.3.2. Используйте заголовочный файл std_lib_facilities.h
В.3.3. Добавление в проект исходного файла на языке С++
В.3.5. Создание исполняемого файла
Приложение Г Инсталляция библиотеки FLTK
Г.3. Инсталляция библиотеки FLTK
Г.4. Использование библиотеки FLTK в среде Visual Studio
Г.5. Как тестировать, если не все работает
Приложение Д Реализация графического пользовательского интерфейса
Д.1. Реализация обратных вызовов
Д.4. Реализация класса Vector_ref