Эта книга не является учебником по языку C++, это учебник по программированию. Несмотря на то что ее автор — автор языка С++, книга не посвящена этому языку программирования; он играет в книге сугубо иллюстративную роль. Автор задумал данную книгу как вводный курс по программированию. Поскольку теория без практики совершенно бессмысленна, такой учебник должен изобиловать примерами программных решений, и неудивительно, что автор языка C++ использовал в книге свое детище. В книге в первую очередь описан широкий круг понятий и приемов программирования, необходимых для того, чтобы стать профессиональным программистом, и в гораздо меньшей степени — возможности языка программирования C++.
В первую очередь, книга адресована начинающим программистам и студентам компьютерных специальностей, которые найдут в ней много новой информации, и смогут узнать точку зрения создателя языка С++ на современные методы программирования.
Если вы решили стать программистом, и уже знакомы с азами C++ — эта книга для вас, в первую очередь потому, что программирование — это не только, и не столько знание инструмента (языка программирования C++), сколько понимание самого процесса. Автор недаром не ограничился своим первоклассным (но ни в коей мере не являющимся учебником для программистов без большого практического опыта) трудом Язык программирования C++.
Подготовка к созданию реальных программ.
Автор книги предполагает, что читатели в конце концов начнут писать нетривиальные программы либо в качестве профессиональных разработчиков программного обеспечения, либо в качестве программистов, работающих в других областях науки и техники.
Упор на основные концепции и методы.
Основные концепции и методы программирования в книге излагаются глубже, чем это принято в традиционных вводных курсах. Этот подход дает основательный фундамент для разработки полезных, правильных, понятных и эффективных программ.
Программирование на современном языке С++ (C++11 и C++14).
Книга представляет собой введение в программирование, включая объектно-ориентированное и обобщенное программирование. Одновременно она представляет собой введение в язык С++, один из широко применяющихся языков программирования в современном мире. В книге описаны современные методы программирования на С++, включая стандартную библиотеку и возможности C++11 и C++14, позволяющие упростить программирование.
Для начинающих программистов и всех, кто хочет научиться программировать.
Книга предназначена в основном для людей, никогда ранее не программировавших, и опробована на более чем тысяче студентов университета. Однако и опытные программисты, и студенты, уже изучившие основы программирования, найдут в книге много полезной информации, которая позволит им перейти на еще более высокий уровень мастерства.
Author(s): Страуструп Бьярне
Edition: 2-е издание
Publisher: Вильямс
Year: 2015
Language: Russian
Pages: 1328
City: М.
Предисловие
Обращение к студентам
Обращение к преподавателям
Стандарт ISO
Поддержка
Благодарности
Глава 0. Обращение к читателям
0.1. Структура книги
0.1.1. Общие принципы
0.1.2. Упражнения, задачи и т.п.
0.1.3. Что дальше
0.2. Принципы обучения и изучения
0.2.1. Порядок изложения
0.2.2. Программирование и языки программирования
0.2.3. Переносимость
0.3. Программирование и компьютерные науки
0.4. Творческое начало и решение задач
0.5. Обратная связь
0.6. Библиографические ссылки
0.7. Биографии
Бьярне Страуструп
Лоуренс “Пит” Петерсен
Ждем ваших отзывов!
Глава 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.2. Итерация
4.5. Функции
4.5.1. Зачем нужны функции
4.5.2. Объявления функций
4.6. Вектор
4.6.1. Обход вектора
4.6.2. Увеличение вектора
4.6.3. Числовой пример
4.6.4. Текстовый пример
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.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.5.9. constexpr-функции
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.5.1. “Простые” перечисления
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. Использование примитивов Shape
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.3.3. Лямбда-выражения
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.3.3. Лямбда-выражения в качестве функций обратного вызова
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. Отладка GUI-программы
Часть 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.3. Копирование
18.3.1. Копирующие конструкторы
18.3.2. Копирующее присваивание
18.3.3. Терминология, связанная с копированием
18.3.4. Перемещение
18.4. Основные операции
18.4.1. Явные конструкторы
18.4.2. Отладка конструкторов и деструкторов
18.5. Доступ к элементам вектора
18.5.1. Константная перегрузка
18.6. Массивы
18.6.1. Указатели на элементы массива
18.6.2. Указатели и массивы
18.6.3. Инициализация массива
18.6.4. Проблемы с указателями
18.7. Примеры: палиндром
18.7.1. Палиндромы с использованием string
18.7.2. Палиндромы с использованием массивов
18.7.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. Текущее состояние дел
19.3. Шаблоны
19.3.1. Типы как шаблонные параметры
19.3.2. Обобщенное программирование
19.3.3. Концепции
19.3.4. Контейнеры и наследование
19.3.5. Целые числа как параметры шаблонов
19.3.6. Вывод аргументов шаблона
19.3.7. Обобщение класса vector
19.4. Проверка диапазона и исключения
19.4.1. Отступление от темы: вопросы проектирования
19.4.2. Признание в использовании макроса
19.5. Ресурсы и исключения
19.5.1. Потенциальные проблемы управления ресурсами
19.5.2. Захват ресурса — это инициализация
19.5.3. Гарантии
19.5.4. Класс unique_ptr
19.5.5. Возврат посредством перемещения
19.5.6. 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.5.1. Обход контейнера
20.5.2 auto
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.4.3. Лямбда-выражения
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. Контейнер map
21.6.2. Обзор контейнера map
21.6.3. Еще один пример использования map
21.6.4. Контейнер unordered_map
21.6.5. Контейнер set
21.7. Копирование
21.7.1. Алгоритм copy
21.7.2. Итераторы потоков
21.7.3. Использование set для поддержки упорядоченности
21.7.4. Алгоритм copy_if
21.8. Сортировка и поиск
21.9. Алгоритмы контейнеров
Часть IV. Дополнительные темы
Глава 22. Идеалы и история
22.1. История, идеалы и профессионализм
22.1.1. Цели и философия языка программирования
22.1.2. Идеалы программирования
22.1.3. Стили и парадигмы
22.2. Обзор истории языков программирования
22.2.1. Первые языки программирования
22.2.2. Корни современных языков программирования
22.2.3. Семейство языков Algol
22.2.4. Язык программирования Simula
22.2.5. Язык программирования С
22.2.6. Язык программирования C++
22.2.7. Современное состояние дел
22.2.8. Источники информации
Глава 23. Работа с текстом
23.1. Текст
23.2. Строки
23.3. Потоки ввода-вывода
23.4. Ассоциативные контейнеры
23.4.1. Детали реализации
23.5. Проблема
23.6. Идея регулярных выражений
23.6.1. Необработанные строковые литералы
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. Одномерная матрица
24.5.3. Двумерные матрицы
24.5.4. Ввод-вывод матриц
24.5.5. Трехмерные матрицы
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.3. Алгоритмы и не алгоритмы
26.3.4. Системные тесты
26.3.5. Поиск предположений, которые не выполняются
26.4. Проектирование с учетом тестирования
26.5. Отладка
26.6. Производительность
26.6.1. Измерение времени
26.7. Ссылки
Глава 27. Язык программирования С
27.1. Языки С и C++: братья
27.1.1. Совместимость языков С и C++
Ссылки
27.1.2. Возможности C++, отсутствующие в С
27.1.3. Стандартная библиотека языка С
27.2. Функции
27.2.1. Отсутствие перегрузки имен функций
27.2.2. Проверка типов аргументов функций
27.2.3. Определения функций
27.2.4. Вызов C-функций из C++-программы и наоборот
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.h
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.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.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.2. Определения членов класса
A.12.3. Создание, уничтожение и копирование
A.12.4. Производные классы
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 и tuple
Б.6.4. Список инициализации
Б.6.5. Указатели управления ресурсами
Б.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. Обобщенные численные алгоритмы
Б.9.6. Случайные числа
Б.10. Работа со временем
Б.11. Функции стандартной библиотеки языка С
Б.11.1. Файлы
Б.11.2. Семейство функций printf()
Б.11.3. C-строки
Б.11.4. Память
Б.11.5. Дата и время
Б.11.6. Другие функции
Б.12. Другие библиотеки
Приложение В. Начала работы с Visual Studio
В.1. Запуск программы
В.2. Инсталляция Visual Studio
В.3. Создание и запуск программ
В.3.1. Создание нового проекта
В.3.2. Использование заголовочного файла std_lib_facilities.h
В.3.3. Добавление в проект исходного файла на языке C++
В.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
Глоссарий
Библиография
Предметный указатель
Фотографии