Программирование — страница 4 из 57

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. Абстрактная точка зрения на функции-объекты