Шрифт:
Интервал:
Закладка:
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. Зависимости