- •1. Начинаем
- •1.1. Решение задачи
- •1.2. Программа на языке C++
- •1.2.1. Порядок выполнения инструкций
- •1.3. Директивы препроцессора
- •1.4. Немного о комментариях
- •1.5. Первый взгляд на ввод/вывод
- •1.5.1. Файловый ввод/вывод
- •2. Краткий обзор С++
- •2.1. Встроенный тип данных “массив”
- •2.2. Динамическое выделение памяти и указатели
- •2.3. Объектный подход
- •2.4. Объектно-ориентированный подход
- •2.5. Использование шаблонов
- •2.6. Использование исключений
- •2.7. Использование пространства имен
- •2.8. Стандартный массив – это вектор
- •3. Типы данных С++
- •3.1. Литералы
- •3.2. Переменные
- •3.2.1. Что такое переменная
- •3.2.2. Имя переменной
- •3.2.3. Определение объекта
- •3.3. Указатели
- •3.4. Строковые типы
- •3.4.1. Встроенный строковый тип
- •3.4.2. Класс string
- •3.5. Спецификатор const
- •3.6. Ссылочный тип
- •3.7. Тип bool
- •3.8. Перечисления
- •3.9. Тип “массив”
- •3.9.1. Многомерные массивы
- •3.9.2. Взаимосвязь массивов и указателей
- •3.10. Класс vector
- •3.11. Класс complex
- •3.12. Директива typedef
- •3.13. Спецификатор volatile
- •3.14. Класс pair
- •3.15. Типы классов
- •4. Выражения
- •4.1. Что такое выражение?
- •4.2. Арифметические операции
- •4.3. Операции сравнения и логические операции
- •4.4. Операции присваивания
- •4.5. Операции инкремента и декремента
- •4.6. Операции с комплексными числами
- •4.7. Условное выражение
- •4.8. Оператор sizeof
- •4.9. Операторы new и delete
- •4.10. Оператор “запятая”
- •4.11. Побитовые операторы
- •4.12. Класс bitset
- •4.13. Приоритеты
- •4.14. Преобразования типов
- •4.14.1. Неявное преобразование типов
- •4.14.2. Арифметические преобразования типов
- •4.14.3. Явное преобразование типов
- •4.14.4. Устаревшая форма явного преобразования
- •4.15. Пример: реализация класса Stack
- •5. Инструкции
- •5.1. Простые и составные инструкции
- •5.2. Инструкции объявления
- •5.3. Инструкция if
- •5.4. Инструкция switch
- •5.5. Инструкция цикла for
- •5.6. Инструкция while
- •5.8. Инструкция do while
- •5.8. Инструкция break
- •5.9. Инструкция continue
- •5.10. Инструкция goto
- •5.11. Пример связанного списка
- •5.11.1. Обобщенный список
- •6. Абстрактные контейнерные типы
- •6.1. Система текстового поиска
- •6.2. Вектор или список?
- •6.3. Как растет вектор?
- •6.4. Как определить последовательный контейнер?
- •6.5. Итераторы
- •6.6. Операции с последовательными контейнерами
- •6.6.1. Удаление
- •6.6.2. Присваивание и обмен
- •6.6.3. Обобщенные алгоритмы
- •6.7. Читаем текстовый файл
- •6.8. Выделяем слова в строке
- •6.9. Обрабатываем знаки препинания
- •6.10. Приводим слова к стандартной форме
- •6.11. Дополнительные операции со строками
- •6.12. Строим отображение позиций слов
- •6.12.1. Определение объекта map и заполнение его элементами
- •6.12.2. Поиск и извлечение элемента отображения
- •6.12.3. Навигация по элементам отображения
- •6.12.4. Словарь
- •6.12.5. Удаление элементов map
- •6.13. Построение набора стоп-слов
- •6.13.1. Определение объекта set и заполнение его элементами
- •6.13.2. Поиск элемента
- •6.13.3. Навигация по множеству
- •6.14. Окончательная программа
- •6.15. Контейнеры multimap и multiset
- •6.16. Стек
- •6.17. Очередь и очередь с приоритетами
- •6.18. Вернемся в классу iStack
- •7. Функции
- •7.1. Введение
- •7.2. Прототип функции
- •7.2.1. Тип возвращаемого функцией значения
- •7.2.2. Список параметров функции
- •7.2.3. Проверка типов формальных параметров
- •7.3. Передача аргументов
- •7.3.1. Параметры-ссылки
- •7.3.2. Параметры-ссылки и параметры-указатели
- •7.3.3. Параметры-массивы
- •7.3.4. Абстрактные контейнерные типы в качестве параметров
- •7.3.5. Значения параметров по умолчанию
- •7.3.6. Многоточие
- •7.4. Возврат значения
- •7.4.1. Передача данных через параметры и через глобальные объекты
- •7.5. Рекурсия
- •7.6. Встроенные функции
- •7.7. Директива связывания extern "C" A
- •7.8. Функция main(): разбор параметров командной строки
- •7.8.1. Класс для обработки параметров командной строки
- •7.9. Указатели на функции
- •7.9.1. Тип указателя на функцию
- •7.9.2. Инициализация и присваивание
- •7.9.3. Вызов
- •7.9.4. Массивы указателей на функции
- •7.9.5. Параметры и тип возврата
- •7.9.6. Указатели на функции, объявленные как extern "C"
- •8. Область видимости и время жизни
- •8.1. Область видимости
- •8.1.1. Локальная область видимости
- •8.2. Глобальные объекты и функции
- •8.2.1. Объявления и определения
- •8.2.2. Сопоставление объявлений в разных файлах
- •8.2.3. Несколько слов о заголовочных файлах
- •8.3. Локальные объекты
- •8.3.1. Автоматические объекты
- •8.3.2. Регистровые автоматические объекты
- •8.3.3. Статические локальные объекты
- •8.4. Динамически размещаемые объекты
- •8.4.1. Динамическое создание и уничтожение единичных объектов
- •8.4.2. Шаблон auto_ptr А
- •8.4.3. Динамическое создание и уничтожение массивов
- •8.4.4. Динамическое создание и уничтожение константных объектов
- •8.4.5. Оператор размещения new А
- •8.5. Определения пространства имен А
- •8.5.1. Определения пространства имен
- •8.5.2. Оператор разрешения области видимости
- •8.5.3. Вложенные пространства имен
- •8.5.4. Определение члена пространства имен
- •8.5.5. ПОО и члены пространства имен
- •8.5.6. Безымянные пространства имен
- •8.6. Использование членов пространства имен А
- •8.6.1. Псевдонимы пространства имен
- •8.6.2. Using-объявления
- •8.6.3. Using-директивы
- •8.6.4. Стандартное пространство имен std
- •9. Перегруженные функции
- •9.1. Объявления перегруженных функций
- •9.1.1. Зачем нужно перегружать имя функции
- •9.1.2. Как перегрузить имя функции
- •9.1.3. Когда не надо перегружать имя функции
- •9.1.4. Перегрузка и область видимости A
- •9.1.5. Директива extern "C" и перегруженные функции A
- •9.1.6. Указатели на перегруженные функции A
- •9.1.7. Безопасное связывание A
- •9.2. Три шага разрешения перегрузки
- •9.3. Преобразования типов аргументов A
- •9.3.1. Подробнее о точном соответствии
- •9.3.2. Подробнее о расширении типов
- •9.3.3. Подробнее о стандартном преобразовании
- •9.3.4. Ссылки
- •9.4. Детали разрешения перегрузки функций
- •9.4.1. Функции-кандидаты
- •9.4.2. Устоявшие функции
- •9.4.3. Наилучшая из устоявших функция
- •9.4.4. Аргументы со значениями по умолчанию
- •10. Шаблоны функций
- •10.1. Определение шаблона функции
- •10.2. Конкретизация шаблона функции
- •10.3. Вывод аргументов шаблона А
- •10.4. Явное задание аргументов шаблона A
- •10.5. Модели компиляции шаблонов А
- •10.5.1. Модель компиляции с включением
- •10.5.2. Модель компиляции с разделением
- •10.5.3. Явные объявления конкретизации
- •10.6. Явная специализация шаблона А
- •10.7. Перегрузка шаблонов функций А
- •10.8. Разрешение перегрузки при конкретизации A
- •10.9. Разрешение имен в определениях шаблонов А
- •10.10. Пространства имен и шаблоны функций А
- •10.11. Пример шаблона функции
- •11. Обработка исключений
- •11.1. Возбуждение исключения
- •11.2. try-блок
- •11.3. Перехват исключений
- •11.3.1. Объекты-исключения
- •11.3.2. Раскрутка стека
- •11.3.3. Повторное возбуждение исключения
- •11.3.4. Перехват всех исключений
- •11.4. Спецификации исключений
- •11.4.1. Спецификации исключений и указатели на функции
- •11.5. Исключения и вопросы проектирования
- •12. Обобщенные алгоритмы
- •12.1. Краткий обзор
- •12.2. Использование обобщенных алгоритмов
- •12.3. Объекты-функции
- •12.3.1. Предопределенные объекты-функции
- •12.3.3. Сравнительные объекты-функции
- •12.3.4. Логические объекты-функции
- •12.3.5. Адаптеры функций для объектов-функций
- •12.3.6. Реализация объекта-функции
- •12.4. Еще раз об итераторах
- •12.4.1. Итераторы вставки
- •12.4.2. Обратные итераторы
- •12.4.3. Потоковые итераторы
- •12.4.4. Итератор istream_iterator
- •12.4.5. Итератор ostream_iterator
- •12.4.6. Пять категорий итераторов
- •12.5. Обобщенные алгоритмы
- •12.5.1. Алгоритмы поиска
- •12.5.2. Алгоритмы сортировки и упорядочения
- •12.5.3. Алгоритмы удаления и подстановки
- •12.5.4. Алгоритмы перестановки
- •12.5.5. Численные алгоритмы
- •12.5.6. Алгоритмы генерирования и модификации
- •12.5.7. Алгоритмы сравнения
- •12.5.8. Алгоритмы работы с множествами
- •12.5.9. Алгоритмы работы с хипом
- •12.6.1. Операция list_merge()
- •12.6.2. Операция list::remove()
- •12.6.3. Операция list::remove_if()
- •12.6.4. Операция list::reverse()
- •12.6.5. Операция list::sort()
- •12.6.6. Операция list::splice()
- •12.6.7. Операция list::unique()
- •13. Классы
- •13.1. Определение класса
- •13.1.1. Данные-члены
- •13.1.2. Функции-члены
- •13.1.3. Доступ к членам
- •13.1.4. Друзья
- •13.1.5. Объявление и определение класса
- •13.2. Объекты классов
- •13.3. Функции-члены класса
- •13.3.1. Когда использовать встроенные функции-члены
- •13.3.2. Доступ к членам класса
- •13.3.3. Закрытые и открытые функции-члены
- •13.3.4. Специальные функции-члены
- •13.3.5. Функции-члены со спецификаторами const и volatile
- •13.3.6. Объявление mutable
- •13.4. Неявный указатель this
- •13.4.1. Когда использовать указатель this
- •13.5. Статические члены класса
- •13.5.1. Статические функции-члены
- •13.6. Указатель на член класса
- •13.6.1. Тип члена класса
- •13.6.2. Работа с указателями на члены класса
- •13.6.3. Указатели на статические члены класса
- •13.7. Объединение – класс, экономящий память
- •13.8. Битовое поле – член, экономящий память
- •13.9. Область видимости класса A
- •13.9.1. Разрешение имен в области видимости класса
- •13.10. Вложенные классы A
- •13.10.1. Разрешение имен в области видимости вложенного класса
- •13.11. Классы как члены пространства имен A
- •13.12. Локальные классы A
- •14. Инициализация, присваивание и уничтожение класса
- •14.1. Инициализация класса
- •14.2. Конструктор класса
- •14.2.1. Конструктор по умолчанию
- •14.2.2. Ограничение прав на создание объекта
- •14.2.3. Копирующий конструктор
- •14.3. Деструктор класса
- •14.3.1. Явный вызов деструктора
- •14.3.2. Опасность увеличения размера программы
- •14.4. Массивы и векторы объектов
- •14.4.1. Инициализация массива, распределенного из хипа A
- •14.4.2. Вектор объектов
- •14.5. Список инициализации членов
- •14.6. Почленная инициализация A
- •14.6.1. Инициализация члена, являющегося объектом класса
- •14.7. Почленное присваивание A
- •14.8. Соображения эффективности A
- •15. Перегруженные операторы и определенные пользователем преобразования
- •15.1. Перегрузка операторов
- •15.1.1. Члены и не члены класса
- •15.1.2. Имена перегруженных операторов
- •15.1.3. Разработка перегруженных операторов
- •15.2. Друзья
- •15.3. Оператор =
- •15.4. Оператор взятия индекса
- •15.5. Оператор вызова функции
- •15.6. Оператор “стрелка”
- •15.7. Операторы инкремента и декремента
- •15.8. Операторы new и delete
- •15.8.1. Операторы new[ ] и delete [ ]
- •15.8.2. Оператор размещения new() и оператор delete()
- •15.9. Определенные пользователем преобразования
- •15.9.1. Конвертеры
- •15.9.2. Конструктор как конвертер
- •15.10. Выбор преобразования A
- •15.10.1. Еще раз о разрешении перегрузки функций
- •15.10.2. Функции-кандидаты
- •15.10.3. Функции-кандидаты для вызова функции в области видимости класса
- •15.10.4. Ранжирование последовательностей определенных пользователем преобразований
- •15.11. Разрешение перегрузки и функции-члены A
- •15.11.1. Объявления перегруженных функций-членов
- •15.11.2. Функции-кандидаты
- •15.11.3. Устоявшие функции
- •15.12. Разрешение перегрузки и операторы A
- •15.12.1. Операторные функции-кандидаты
- •15.12.2. Устоявшие функции
- •15.12.3. Неоднозначность
- •16. Шаблоны классов
- •16.1. Определение шаблона класса
- •16.1.1. Определения шаблонов классов Queue и QueueItem
- •16.2. Конкретизация шаблона класса
- •16.2.1. Аргументы шаблона для параметров-констант
- •16.3. Функции-члены шаблонов классов
- •16.3.1. Функции-члены шаблонов Queue и QueueItem
- •16.4. Объявления друзей в шаблонах классов
- •16.4.1. Объявления друзей в шаблонах Queue и QueueItem
- •16.5. Статические члены шаблонов класса
- •16.6. Вложенные типы шаблонов классов
- •16.7. Шаблоны-члены
- •16.8. Шаблоны классов и модель компиляции A
- •16.8.1. Модель компиляции с включением
- •16.8.2. Модель компиляции с разделением
- •16.8.3. Явные объявления конкретизации
- •16.9. Специализации шаблонов классов A
- •16.10. Частичные специализации шаблонов классов A
- •16.11. Разрешение имен в шаблонах классов A
- •16.12. Пространства имен и шаблоны классов
- •16.13. Шаблон класса Array
- •17. Наследование и подтипизация классов
- •17.1. Определение иерархии классов
- •17.1.1. Объектно-ориентированное проектирование
- •17.2. Идентификация членов иерархии
- •17.2.1. Определение базового класса
- •17.2.2. Определение производных классов
- •17.2.3. Резюме
- •17.3. Доступ к членам базового класса
- •17.4. Конструирование базового и производного классов
- •17.4.1. Конструктор базового класса
- •17.4.2. Конструктор производного класса
- •17.4.3. Альтернативная иерархия классов
- •17.4.4. Отложенное обнаружение ошибок
- •17.4.5. Деструкторы
- •17.5. Виртуальные функции в базовом и производном классах
- •17.5.1. Виртуальный ввод/вывод
- •17.5.2. Чисто виртуальные функции
- •17.5.3. Статический вызов виртуальной функции
- •17.5.4. Виртуальные функции и аргументы по умолчанию
- •17.5.5. Виртуальные деструкторы
- •17.5.6. Виртуальная функция eval()
- •17.5.7. Почти виртуальный оператор new
- •17.5.8. Виртуальные функции, конструкторы и деструкторы
- •17.6. Почленная инициализация и присваивание A
- •17.7. Управляющий класс UserQuery
- •17.7.1. Определение класса UserQuery
- •17.8. Соберем все вместе
- •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.5. Виртуальное наследование A
- •18.5.1. Объявление виртуального базового класса
- •18.5.2. Специальная семантика инициализации
- •18.5.3. Порядок вызова конструкторов и деструкторов
- •18.5.4. Видимость членов виртуального базового класса
- •18.6. Пример множественного виртуального наследования A
- •18.6.1. Порождение класса, контролирующего выход за границы массива
- •18.6.2. Порождение класса отсортированного массива
- •18.6.3. Класс массива с множественным наследованием
- •19. Применение наследования в C++
- •19.1. Идентификация типов во время выполнения
- •19.1.1. Оператор dynamic_cast
- •19.1.2. Оператор typeid
- •19.1.3. Класс type_info
- •19.2. Исключения и наследование
- •19.2.1. Исключения, определенные как иерархии классов
- •19.2.2. Возбуждение исключения типа класса
- •19.2.3. Обработка исключения типа класса
- •19.2.4. Объекты-исключения и виртуальные функции
- •19.2.5. Раскрутка стека и вызов деструкторов
- •19.2.6. Спецификации исключений
- •19.2.7. Конструкторы и функциональные try-блоки
- •19.2.8. Иерархия классов исключений в стандартной библиотеке C++
- •19.3. Разрешение перегрузки и наследование A
- •19.3.1. Функции-кандидаты
- •19.3.2. Устоявшие функции и последовательности пользовательских преобразований
- •19.3.3. Наилучшая из устоявших функций
- •20. Библиотека iostream
- •20.1. Оператор вывода <<
- •20.2. Ввод
- •20.2.1. Строковый ввод
- •20.3. Дополнительные операторы ввода/вывода
- •20.4. Перегрузка оператора вывода
- •20.5. Перегрузка оператора ввода
- •20.6. Файловый ввод/вывод
- •20.7. Состояния потока
- •20.8. Строковые потоки
- •20.9. Состояние формата
- •20.10. Сильно типизированная библиотека
- •21. Обобщенные алгоритмы в алфавитном порядке
- •Алгоритм accumulate()
- •Алгоритм adjacent_difference()
- •Алгоритм adjacent_find()
- •Алгоритм binary_search()
- •Алгоритм copy()
- •Алгоритм copy_backward()
- •Алгоритм count()
- •Алгоритм count_if()
- •Алгоритм equal()
- •Алгоритм equal_range()
- •Алгоритм fill()
- •Алгоритм fill_n()
- •Алгоритм find()
- •Алгоритм find_if()
- •Алгоритм find_end()
- •Алгоритм find_first_of()
- •Алгоритм for_each()
- •Алгоритм generate()
- •Алгоритм generate_n()
- •Алгоритм includes()
- •Алгоритм inner_product()
- •Алгоритм inplace_merge()
- •Алгоритм iter_swap()
- •Алгоритм lexicographical_compare()
- •Алгоритм lower_bound()
- •Алгоритм max()
- •Алгоритм max_element()
- •Алгоритм min()
- •Алгоритм min_element()
- •Алгоритм merge()
- •Алгоритм mismatch()
- •Алгоритм next_permutation()
- •Алгоритм nth_element()
- •Алгоритм partial_sort()
- •Алгоритм partial_sort_copy()
- •Алгоритм partial_sum()
- •Алгоритм partition()
- •Алгоритм prev_permutation()
- •Алгоритм random_shuffle()
- •Алгоритм remove()
- •Алгоритм remove_copy()
- •Алгоритм remove_if()
- •Алгоритм remove_copy_if()
- •Алгоритм replace()
- •Алгоритм replace_copy()
- •Алгоритм replace_if()
- •Алгоритм replace_copy_if()
- •Алгоритм reverse()
- •Алгоритм reverse_copy()
- •Алгоритм rotate()
- •Алгоритм rotate_copy()
- •Алгоритм search()
- •Алгоритм search_n()
- •Алгоритм set_difference()
- •Алгоритм set_intersection()
- •Алгоритм set_symmetric_difference()
- •Алгоритм set_union()
- •Алгоритм sort()
- •Алгоритм stable_partition()
- •Алгоритм stable_sort()
- •Алгоритм swap()
- •Алгоритм swap_ranges()
- •Алгоритм transform()
- •Алгоритм unique()
- •Алгоритм unique_copy()
- •Алгоритм upper_bound()
- •Алгоритмы для работы с хипом
- •Алгоритм make_heap()
- •Алгоритм pop_heap()
- •Алгоритм push_heap()
- •Алгоритм sort_heap()
Алгоритмы для работы с хипом
В стандартной библиотеке используется макс-хип. Макс-хип – это представленное в виде массива двоичное дерево, для которого значение ключа в каждом узле больше либо равно значению ключа в каждом из узлов-потомков. (Подробное обсуждение макс-хипа можно найти в [SEDGEWICK88]. Альтернативой ему является мин-хип, для которого значение ключа в каждом узле меньше либо равно значению ключа в каждом из узлов-потомков.) В реализации из стандартной библиотеки самое большое значение (корень дерева) всегда оказывается в начале массива. Например, приведенная последовательность букв удовлетворяет требованиям, накладываемым на хип:
X T O G S M N A E R A I
В данном примере X – это корневой узел, слева от него находится T, а справа – O. Обратите внимание, что потомки не обязательно должны быть упорядочены (т.е. значение в левом узле не обязано быть меньше, чем в правом). G и S – потомки узла T, а M и N – потомки узла O. Аналогично A и E – потомки G, R и A – потомки S, I – левый потомок M, а N – листовой узел без потомков.
Четыре обобщенных алгоритма для работы с хипом: make_heap(), pop_heap(), push_heap() и sort_heap() – поддерживают его создание и различные манипуляции. В последних трех алгоритмах предполагается, что последовательность, ограниченная парой итераторов, – действительно хип (в противном случае поведение программы не определено). Заметим, что список нельзя использовать как контейнер для хранения хипа, поскольку он не поддерживает произвольный доступ. Встроенный массив для размещения хипа использовать можно, но в этом случае трудно применять алгоритмы pop_heap() и push_heap(), так как они требуют изменения размера контейнера. Мы опишем все четыре алгоритма, а затем проиллюстрируем их работу на примере небольшой программы.
Алгоритм make_heap()
template< class RandomAccessIterator > void
make_heap( RandomAccessIterator first, RandomAccessIterator last );
template< class RandomAccessIterator, class Compare
>
void
make_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
make_heap() преобразует в хип последовательность, ограниченную диапазоном [first,last). В первом варианте для сравнения используется оператор “меньше”, определенный для типа элементов контейнера, а во втором – операция comp.
Алгоритм pop_heap()
template< class RandomAccessIterator > void
pop_heap( RandomAccessIterator first, RandomAccessIterator last );
template< class RandomAccessIterator, class Compare
>
void
pop_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
pop_heap() в действительности не исключает наибольший элемент, а переупорядочивает хип. Он переставляет элементы в позициях first и last-1, а затем перестраивает в хип последовательность в диапазоне [first,last-1). После этого “вытолкнутый” элемент можно получить посредством функции-члена back() контейнера либо по-настоящему исключить его с помощью pop_back(). В первом варианте при сравнении используется оператор “меньше”, определенный для типа элементов контейнера, а во втором – операция comp.
Алгоритм push_heap()
template< class RandomAccessIterator > void
push_heap( RandomAccessIterator first, RandomAccessIterator last );
template< class RandomAccessIterator, class Compare
>
void
push_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
push_heap() предполагает, что последовательность, ограниченная диапазоном [first,last-1), – хип и что новый добавляемый к хипу элемент находится в позиции last-1. Все элементы в диапазоне [first,last) реорганизуются в новый хип. Перед вызовом push_heap() необходимо вставить новый элемент в конец контейнера, возможно, применив функцию push_back() (это показано в примере ниже). В первом варианте при сравнении используется оператор “меньше”, определенный для типа элементов контейнера; во втором – операция comp.
Алгоритм sort_heap()
template< class RandomAccessIterator > void
sort_heap( RandomAccessIterator first, RandomAccessIterator last );
template< class RandomAccessIterator, class Compare
>
void
sort_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
sort_heap() сортирует последовательность в диапазоне [first,last), предполагая, что это правильно построенный хип; в противном случае поведение программы не определено. (Разумеется, после сортировки хип перестает быть хипом!) В первом варианте при сравнении используется оператор “меньше”, определенный для типа
#include <algorithm> #include <vector> #include <assert.h>
template <class Type>
void print_elements( Type elem ) { cout << elem << " "; }
int main()
{
int ia[] = { 29,23,20,22,17,15,26,51,19,12,35,40 }; vector< int, allocator > vec( ia, ia+12 );
// печатается: 51 35 40 23 29 20 26 22 19 12 17 15 make_heap( &ia[0], &ia[12] );
void (*pfi)( int ) = print_elements; for_each( ia, ia+12, pfi ); cout << "\n\n";
//печатается: 12 17 15 19 23 20 26 51 22 29 35 40
//минимальный хип: в корне наименьший элемент
make_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";
// печатается: 12 15 17 19 20 22 23 26 29 35 40 51 sort_heap( ia, ia+12 );
for_each( ia, ia+12, pfi ); cout << "\n\n";
//добавим новый наименьший элемент vec.push_back( 8 );
//печатается: 8 17 12 19 23 15 26 51 22 29 35 40 20
//новый наименьший элемент должен оказаться в корне
push_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";
//печатается: 12 17 15 19 23 20 26 51 22 29 35 40 8
//наименьший элемент должен быть заменен на следующий по порядку
pop_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";
элементов контейнера, а во втором – операция comp.
}
#
символы...................................................................... |
|
#include, директива................................................... |
|
& (амперсанд)......................................................... |
|
использование с директивой связывания........... |
366 |
оператор взятия адреса:использование в |
|
использование с using-директивой.............. |
68, 441 |
определении ссылки................................ |
106 |
÷ |
|
&& (двойной амперсанд) |
|
|
|
|
члены класса |
|
|
оператор логического И................................ |
146 |
|
|
шаблон класса Array.................................................. |
|
данные-члены.................................................... |
612 |
Array_RC, производный класс ....................... |
1009 |
изменчивые (mutable).................................. |
633 |
|
|
статические.............................................. |
642 |
тип члена.................................................... |
653 |
битовые поля..................................................... |
662 |
шаблоны............................................................ |
848 |
функции-члены....................................................... |
|
встроенные и не-встроенные.......................... |
623 |
закрытые и открытые.................................. |
627 |
конверторы.................................................. |
778 |
специальные функции-члены......................... |
628 |
спецификации исключений для................... |
1041 |
статические.............................................. |
645 |
тип члена.................................................... |
650 |
this........................................................................ |
|
когда использовать в функциях-членах........ |
638 |
использование в перегруженном операторе |
|
присваивания.......................................... |
727 |
указатель this............................................ |
637 |
числа с плавающей точкой........................................... |
|
арифметика, характеристики и смежные темы... |
145 |
правила преобразования типов............................ |
178 |
стандартные преобразования при разрешении |
|
перегрузки функции.................................... |
467 |
численные обобщенные алгоритмы............................. |
602 |
читабельность........................................................... |
|
разделение обработчиков исключений............... |
550 |
рекурсивных функций...................................... |
364 |
квалификатор const для объявления констант.... |
101 |
имен перегруженных функций............................. |
446 |
имен параметров................................................. |
335 |
параметров-ссыслок......................................... |
346 |
typedef............................................................ |
128 |
в объявлениях указателей на функции.......... |
381 |
как синоним контейнерных типпов..................... |
304 |
à |
|
адапторы..................................................................... |
|
функций, для объектов-функций........................ |
589 |
á |
|
базовые классы.......................................................... |
|
абстрактные базовые классы........................... |
926 |
деструкторы................................................... |
917 |
видимость членов.................................................... |
|
при одиночном наследовании............................. |
985 |
при множественном наследовании..................... |
988 |
видимость классов................................................. |
|
при виртуальном наследовании..................... |
1001 |
виртуальные базовые классы......................... |
1004 |
доступ................................................................... |
|
к членам...................................................... |
905 |
к базовым классам........................................ |
981 |
к закрытым базовым классам......................... |
980 |
к защищенным членам..................................... |
887 |
доступ к элементам отображения с помощью.......... |
308 |
конструирование..................................................... |
|
виртуальное наследование............................ |
999 |
одиночное наследование.................................. |
914 |
почленная инициализация.............................. |
945 |
множественное наследование.......................... |
967 |
преобразование к базовому классу..................... |
886 |
преобразование к базовому классу........................... |
|
при выведении аргументов шаблона функции... |
502 |
присваивание, почленное присваивание................ |
947 |
определение базового класса................................... |
|
при виртуальном наследовании....................... |
995 |
при одиночном наследовании............................. |
892 |
при множественном наследовании..................... |
972 |
безопасное связывание........................................... |
|
397 |
перегруженных функций................................... |
|
454 |
à |
|
|
адрес(а)..................................................................... |
|
|
как значение указателя..................................... |
|
88 |
конкретизированных шаблонов функций................ |
|
499 |
ä |
|
|
деление....................................................................... |
|
|
комплексных чисел............................................ |
|
155 |
целочисленное................................................... |
|
143 |
декремента оператор (--).............................................. |
|
|
префиксная форма...................................... |
154, 759 |
|
постфиксная форма.................................... |
154, 760 |
|
â |
|
|
вектор(ы)................................................................... |
|
|
емкость, связь с размером................................ |
|
266 |
find(), обобщенный алгоритм............................... |
|
570 |
увеличение размера......................................... |
|
264 |
á |
|
|
байты......................................................................... |
|
|
чтение с помощью get().................................... |
|
1082 |
запись с помощью put().................................... |
|
1079 |
ä |
|
|
данные-члены............................................................... |
|
|
члены базового и производного классов................ |
|
896 |
изменчивые (mutable)....................................... |
|
633 |
á |
|
|
бесконечный................................................................ |
|
|
рекурсия........................................................ |
|
363 |
цикл, избежание в операциях поиска в строке |
...283 |
|
à |
|
|
абстракция................................................................ |
|
|
объекта, класс комплексных чисел как пример... |
155 |
|
стандартная библиотека, преимущества |
|
|
использования.............................................. |
|
166 |
ä |
|
|
деструктор(ы)..................................................... |
|
705 |
для элементов массива...................................... |
|
707 |
à |
|
|
автоматические объекты............................................. |
|
|
объявление с ключевым словом register............... |
|
403 |
особенности хранения......................................... |
|
401 |
a
abort(), функция.........................................................
вызов из terminate() как подразумеваемое поведение
abs(), ...................................................................функция |
558 |
|
|
поддержка для комплексных чисел..................... |
157 |
accumulate(), обобщенный алгоритм....................... |
1120 |
â |
|
взятия адреса (&) оператор....................................... |
|
использование в определении ссылки.......... |
105, 106 |
использование с именем функции......................... |
379 |
взятия индекса оператор ([])....................................... |
|
использование в классе bitset........................... |
169 |
использование в отображениях........................... |
303 |
время жизни.......................................................... |
394 |
динамически выделенных объектов..................... |
|
405 |
сравнение с указателями на них................... |
|
407 |
auto_ptr, влияние на динамически выделенные |
|
|
объекты...................................................... |
|
408 |
и область видимости (глава)............................ |
|
442 |
локальных объектов................................................ |
|
|
автоматических и статических.................. |
|
401 |
влияние раскрутки стека на объекты типа |
|
|
класса................................................... |
|
557 |
проблема возврата ссылки на локальный объект |
||
.............................................................. |
|
360 |
à |
|
|
аргумент(ы).......................................................... |
|
331 |
передача.......................................................... |
|
357 |
передача............................................................... |
|
|
использование указателей для....................... |
|
87 |
передача по значению........................................ |
|
338 |
по умолчанию............................................................ |
|
|
и виртуальные функции............................... |
|
931 |
и устоявшие функции................................... |
|
487 |
шаблона класса...................................................... |
|
|
для параметров-констант.............................. |
|
827 |
для параметров-типов................................... |
|
829 |
шаблонов функций.................................................... |
|
|
выведение аргументов.................................. |
|
505 |
явная спецификация, недостатки................. |
|
507 |
явная спецификация, мотивировка................ |
|
507 |
шаблонов функции.................................................... |
|
|
явные.......................................................... |
|
508 |
òèï........................................................................ |
|
|
преобразования, разрешение перегрузки |
|
|
функции.................................................. |
|
474 |
преобразования, расширение типа................. |
|
467 |
преобразования, ссылок................................ |
|
473 |
преобразования, стандартные....................... |
|
471 |
арифметические......................................................... |
|
|
исключения...................................................... |
|
143 |
объекты-функции.............................................. |
|
585 |
преобразования......................................... |
176, 180 |
|
преобразования....................................................... |
|
|
bool â int.................................................... |
|
110 |
неявное выполнение при вычислении выражений |
||
.............................................................. |
|
176 |
типов, расширение типа перечисления.......... |
|
113 |
операции, поддержка для комплексных чисел...... |
127 |
|
операторы......................................................... |
|
145 |
операторы............................................................... |
|
|
таблица...................................................... |
|
142 |
указатели......................................................... |
|
91 |
a |
|
|
adjacent_difference(), обобщенный алгоритм......... |
|
1121 |
adjacent_find(), обобщенный алгоритм................... |
|
1123 |
ä |
|
|
друзья................................................................. |
|
749 |
друзья....................................................................... |
|
|
и специальные права доступа.................... |
138, 616 |
â
видимость...................................................................
роль в выборе функции-кандидата при разрешении
перегрузки функции.................................... |
474 |
переменных в условии цикла...................... |
217, 394 |
определения символической константы................ |
400 |
требование к встроенным функциям............. |
365, 400 |
||
à |
|
|
|
алгоритм(ы)................................................................ |
|
|
|
функция................................................................. |
|
|
|
выведение аргумента шаблона....................... |
|
|
504 |
разрешение перегрузки............................... |
|
|
527 |
шаблон как................................................... |
|
|
490 |
ä |
|
|
|
директивы.............................................................. |
|
|
24 |
директивы связывания......................................... |
|
|
368 |
в связи с перегрузкой.................................... |
|
|
452 |
использование с указателями на функции........... |
|
385 |
|
ã |
|
|
|
глобальное пространство имен....................................... |
|
|
|
проблема засорения..................................... |
|
66, 419 |
|
глобальные функции.............................................. |
|
|
394 |
á |
|
|
|
бинарные..................................................................... |
|
|
|
операторы......................................................... |
|
|
141 |
ä |
|
|
|
динамическое выделение памяти.................................... |
|
|
|
для массива..................................................... |
|
|
163 |
как требование к динамически растущему вектору |
|||
динамическое...................................................................освобождение памяти |
|
|
261 |
|
|
|
|
для массивов.................................................... |
|
|
416 |
одиночных объектов........................................... |
|
|
408 |
объектов.......................................................... |
|
|
419 |
оператор delete......................... |
135, 405, 407, 770 |
||
утечка памяти.................................................. |
|
|
408 |
á |
|
|
|
áëîê............................................................................ |
|
|
|
инструкций.................................................... |
|
|
190 |
комментария........................................................ |
|
|
24 |
функциональный try-блок.......................................... |
|
|
|
и конструкторы......................................... |
|
|
1043 |
try-áëîê............................................................ |
|
|
553 |
â |
|
|
|
висячий..................................................................... |
|
|
|
проблемы висячего else, описание и устранение |
. .197 |
||
á |
|
|
|
битовое поле................................................................ |
|
|
|
как средство экономии памяти............................ |
|
|
662 |
битовый вектор..................................................... |
|
|
165 |
битовый вектор........................................................... |
|
|
|
в сравнении с классом bitset............................. |
|
|
165 |
ä |
|
|
|
для элементов массива................................................. |
|
|
|
динамическое выделение памяти......................... |
|
|
710 |
å |
|
|
|
емкость контейнерных типов.......................................... |
|
|
|
в сравнении с размером..................................... |
|
|
261 |
á |
|
|
|
больше (>), оператор................................................... |
|
|
|
поддержка в арифметических типах данных......... |
30 |
ä
доступ........................................................................ |
|
к членам................................................... |
615, 624 |
оператор доступа к членам ->........................ |
757 |
к контейнеру..........................................................
последовательный доступ как критерий выбора
òèïà....................................................... |
|
260 |
к массиву.......................................................... |
|
31 |
индекс........................................................... |
|
45 |
индексирование............................................ |
|
114 |
к пространству имен............................................... |
|
|
механизмы, компромиссные решения.................... |
|
68 |
уровни, protected............................................... |
|
49 |
a |
|
|
algorithm, заголовочный файл................................ |
|
600 |
à |
|
|
ассоциативность........................................................ |
|
|
операторов, влияние на вычисление выражений... |
176 |
|
порядок вычисления подвыражений..................... |
|
142 |
ассоциативные контейнеры........................................... |
|
|
неприменимость обобщенных алгоритмов |
|
|
переупорядочения......................................... |
|
603 |
ассоциирование........................................................... |
|
|
значений, использование класса pair................. |
|
129 |
â |
|
|
вставка элементов...................................................... |
|
|
в вектор.......................................................... |
|
124 |
в контейнер, с помощью адапторов функций........... |
|
592 |
в контейнеры multimap и multiset.................... |
|
321 |
в отображение.................................................. |
|
304 |
â ñòåê............................................................. |
|
324 |
различные механизмы для разных типов контейнеров |
||
................................................................... |
|
260 |
итераторы, обозначение диапазона...................... |
|
593 |
встроенные функции............................................... |
|
134 |
перегруженные операторы вызова...................... |
|
575 |
объекты-функции...................................... |
575, 581 |
|
объявление....................................................... |
|
366 |
шаблонов функций как................................... |
|
496 |
преимущества................................................... |
|
365 |
определение, размещение в заголовочном файле..... |
398 |
|
встроенный(е)............................................................. |
|
|
массивы................................................................. |
|
|
запрет присваивания другому массиву......... |
|
334 |
запрет ссылаться на.................................. |
|
116 |
отсутствие поддержки операции erase()...... |
573 |
|
типы данных............................................................ |
|
|
арифметические............................................ |
|
33 |
a |
|
|
any(), функция............................................................ |
|
|
в классе bitset................................................ |
|
168 |
á |
|
|
булевский(е).............................................................. |
|
|
стандартные преобразования при разрешении |
|
|
перегрузки функции.................................... |
|
467 |
a |
|
|
aункции...................................................................... |
|
|
интерфейс............................................................. |
|
|
включение объявления исключений в............ |
|
562 |
append(), функция...................................................... |
|
|
конкатенация строк......................................... |
|
296 |
argc, переменная.......................................................... |
|
|
счетчик аргументов в командной строке............. |
368 |
argv, массив............................................................... |
|
для доступа к аргументам в командной строке...... |
368 |
assert(), макрос....................................................... |
52 |
at(), функция.............................................................. |
|
контроль выхода за границы диапазона во время |
|
выполнения................................................... |
298 |
atoi(), функция...........................................................
применение для обработки аргументов в командной
строке........................................................ |
373 |
â |
|
вычисление................................................................. |
|
порядок вычисления подвыражений..................... |
142 |
вычитание.................................................................. |
|
minus, объект-функция.................................... |
585 |
выражения.................................................................. |
|
(глава)............................................................ |
189 |
разрешение имен............................................... |
390 |
использование аргументов по умолчанию............... |
354 |
выполнение................................................................... |
|
непоследовательные инструкции......................... |
20 |
условное............................................................. |
20 |
a |
|
auto_ptr, шаблон класса........................................ |
413 |
auto_ptr, шаблон класса.............................................. |
|
подводные камни.................................................. |
412 |
b
back_inserter(), адаптор функции................................
использование в операции вставки push_back() 592
back(), функция.......................................................... |
|
|
поддержка очереди........................................... |
326 |
|
begin(), функция........................................................ |
|
|
итератор............................................................... |
|
|
возврат с помощью........................................ |
593 |
|
binary_search(), обобщенный алгоритм.................. |
1124 |
|
bind1st(), адаптор функции................................... |
588 |
|
bitset, класс.............................................................. |
|
|
заголовочный файл bitset................................... |
169 |
|
операции.......................................................... |
|
172 |
оператор доступа к биту ([])............................. |
168 |
|
test(), функция................................................ |
168 |
|
to_long(), |
функция......................................... |
171 |
to_string(), |
функция....................................... |
171 |
break................................................................... |
|
225 |
break, инструкция..................................................... |
|
|
сравнение с инструкцией return....................... |
357 |
C
C_str(), функция.........................................................
преобразование объектов класса string в C-строки
C, ÿçûê................................................................... |
138 |
|
|
символьные строки.................................................. |
|
динамическое выделение памяти для.............. |
414 |
необходимость доступа из класса string........ |
130 |
C++, ÿçûê.................................................................. |
|
введение в (глава)............................................. |
13 |
компоненты............................................................... |
|
типы данных (глава)..................................... |
140 |
предопределенные операторы (таблица).............. |
743 |
std, пространство имен...................................... |
441 |
ç
заголовочные файлы.....................................................
как средство повторного использования объявлений
функций...................................................... |
|
333 |
по имени................................................................... |
|
|
algorithm..................................................... |
|
72 |
iomanip...................................................... |
|
137 |
limits.......................................................... |
|
145 |
memory...................................................... |
|
408 |
set313 |
|
|
sstream..................................................... |
|
1061 |
stack........................................................... |
|
323 |
string............................................................ |
|
68 |
vector................................................... |
69, 122 |
|
содержимое............................................................. |
|
|
директивы связывания................................ |
|
367 |
включение определения шаблона функции, |
|
|
преимущества и недостатки..................... |
|
510 |
объявления............................................ |
82, 400 |
|
объявления явных специализаций шаблонов.... |
518 |
|
запись активации................................................. |
|
337 |
автоматическое включение объектов в............... |
|
401 |
c |
|
|
catch-обработчик.................................... |
62, 550, 553 |
|
критерий выбора................................................ |
|
63 |
универсальный обработчик............................... |
|
561 |
cerr........................................................................ |
|
26 |
представление стандартного вывода для ошибок с |
||
помощью...................................................... |
|
1058 |
char *, указатель...................................................... |
|
|
работы с C-строками символов............................. |
|
93 |
char, òèï................................................................. |
|
76 |
check_range(), пример функции................................... |
|
|
как закрытая функция-член............................... |
|
51 |
cпецификации............................................................. |
|
|
исключений............................................................ |
|
|
для документирования исключений................ |
|
562 |
cin......................................................................... |
|
26 |
использование итератора istream_iterator........ |
595 |
|
представление стандартного ввода с помощью.... |
1058 |
|
class, ключевое слово.................................................. |
|
|
использование в параметрах-типах шаблона.............. |
|
|
класса........................................................ |
|
818 |
функции...................................................... |
|
491 |
использование в определении класса.................. |
|
610 |
использование в определении шаблона класса...... |
819 |
|
typename как синоним....................................... |
|
494 |
const, квалификатор................................................... |
|
|
вопросы разрешения перезагрузки функций............. |
|
|
ранжирование преобразований, связанных с |
|
|
инициализацией ссылочных параметров.... |
487 |
|
константные параметры............................................ |
|
|
передача массива из константных элементов..346 параметры-ссылки с квалификатором const..341,
351 константные объекты, динамическое выделение и
освобождение памяти..................................... |
416 |
контейнеры, необходимость константного итератора |
|
................................................................... |
591 |
преобразование объектов в константы................. |
102 |
сравнение с volatile......................................... |
128 |
ссылка, инициализация объектом другого типа... |
106 |
указатели на константные объекты.................... |
102 |
copy(), обобщенный алгоритм................................. |
1125 |
copy(), обобщенный алгоритм......................................... |
|
использование класса inserter.......................... |
314 |
count_if(), обобщенный алгоритм........................... |
1130 |
count(), обобщенный алгоритм |
................................1127 |
count(), обобщенный алгоритм.......................................
использование istream_iterator и ostream_iterator
................................................................... |
597 |
использование с множествами............................. |
315 |
count(), функция........................................................ |
|
в классе bitset................................................ |
168 |
cout....................................................................... |
26 |
представление стандартного вывода с помощью. . |
1058 |
ð |
|
разрешение перегрузки функции........................... |
457 |
(глава)............................................................ |
488 |
выбор преобразования........................................ |
784 |
устоявшие функции.......................................... |
481 |
для вызовов операторных функций................. |
806 |
для вызовов функций-членов......................... |
799 |
функции-кандидаты................................................ |
|
для вызовов функций-членов......................... |
796 |
явные приведения как указания компилятору....... |
465 |
Ð
Разрешения области видимости оператор (...................
):доступ к шаблону функции как члену пространства
èìåí............................................................. |
|
540 |
ð |
|
|
разыменования оператор (*).......................................... |
|
|
использование с возвращенным типом указателя... |
379 |
|
не требуется для вызова функции.................... |
|
380 |
опасности, связанные с указателями.................. |
|
343 |
ранжирование.............................................................. |
|
|
определений шаблона функции............................. |
|
521 |
рассказ об Алисе Эмме......................................... |
|
258 |
рассказ об Алисе Эмме............................................... |
|
|
и реализация класса string............................. |
|
138 |
d |
|
|
delete, оператор.............................................. |
35, 164 |
|
безопасное и небезопасное использование, примеры407 |
||
для одиночного объекта...................................... |
|
405 |
для массивов.......................................................... |
|
|
объектов класса.......................................... |
|
767 |
deque (двустороння очередь, дека)............................. |
|
|
как последовательный контейнер........................ |
|
329 |
применение для реализации стека..................... |
|
324 |
do-while, инструкция.......................................... |
|
224 |
do-while, инструкция................................................ |
|
|
сравнение с инструкциями for и while.............. |
|
214 |
È |
|
|
И, оператор........................................................... |
|
142 |
è |
|
|
идентификатор........................................................ |
|
83 |
использования в качестве спецификатора типа |
|
|
класса........................................................ |
|
130 |
соглашения по именованию...................................... |
|
83 |
иерархии.................................................................... |
|
|
поддержка мезанизма классов............................ |
|
130 |
определение............................................................ |
|
|
идентификация членов................................. |
|
897 |
исключений, в стандартной библиотеке C++
............................................................1046
ë
лексикографическое упорядочение...............................
в обобщенных алгоритмах перестановок............... |
602 |
в обобщенныых алгоритмах сравнения................. |
602 |
ê |
|
класс(ы).................................................................... |
|
друзья............................................................ |
748 |
возвращаемые значения..................................... |
361 |
вопросы эффективности..................................... |
734 |
заголовок.......................................................... |
610 |
параметры.............................................................. |
|
для возврата сразу нескольких значений.... |
362 |
вопросы эффективности................................ |
341 |
объединение...................................................... |
661 |
òåëî................................................................. |
610 |
ë |
|
литеральные константы........................................... |
78 |
C-строки............................................................... |
|
сравнение с символьными литералами............. |
116 |
f суффикс.......................................................... |
77 |
с плавающей точкой............................................ |
77 |
U суффикс........................................................ |
77 |
ê
китайский язык..........................................................
поддержка двухбайтовых символьных литералов..77
ë
логические встроенные операторы.......................... |
|
148 |
логические объекты-функции...................................... |
|
|
logical_and..................................................... |
|
587 |
logical_not...................................................... |
|
588 |
logical_or....................................................... |
|
588 |
è |
|
|
именование................................................................... |
|
|
соглашения об именовании идентификаторов........... |
|
84 |
ë |
|
|
локализация............................................................... |
|
|
влияние глобального объекта на......................... |
|
361 |
константной переменной или объекта.................... |
|
101 |
на уровне файла, использование безымянного |
|
|
пространства имен........................................ |
|
432 |
локальная область видимости......................... |
389, 394 |
|
доступ к членам в глобальной области видимости, |
||
скрытым за локальными объектами................. |
|
425 |
разрешение имени.............................................. |
|
392 |
имена в пространстве имен, скрытые за локальными |
||
объектами.................................................... |
|
428 |
переменная, неинициализированная...................... |
|
401 |
try-áëîê........................................................... |
|
551 |
локальные объекты................................................ |
|
405 |
локальные объекты...................................................... |
|
|
проблема возврата ссылки на............................. |
|
360 |
статические................................................... |
|
401 |
è |
|
|
инкремента оператор (++)............................................. |
|
|
встроенный....................................................... |
|
155 |
инициализация............................................................ |
|
|
векторов.......................................................... |
|
122 |
массива................................................................. |
|
|
динамически выделенного............................... |
|
414 |
динамически выделенных объектов классов... |
766 |
|
многомерного................................................... |
|
118 |
указателей на функции................................ |
|
381 |
объектов................................................................ |
|
|
автоматических.......................................... |
|
401 |
автоматических, по сравнению с локальными |
||
статическими........................................ |
|
404 |
глобальных, инициализация по умолчанию....... |
395 |
|
динамически выделенных.............................. |
|
406 |
статических локальных.............................. |
|
403 |
поведение auto_ptr............................................ |
|
410 |
сравнение с присваиванием................................ |
|
148 |
ссылок............................................................. |
|
105 |
указателя на функцию...................................... |
|
379 |
влияние на спецификацию исключений.......... |
|
565 |
вопросы, связанные с перегруженными функциями |
||
.............................................................. |
|
453 |
ê |
|
|
командная строка......................................................... |
|
|
класс.............................................................. |
|
377 |
опции...................................................................... |
|
|
пример программы.......................................... |
|
375 |
конкретизация............................................................ |
|
|
шаблона функции............................................... |
|
497 |
Ê |
|
|
Конкретизация........................................................... |
|
|
шаблона функции..................................................... |
|
|
разрешение перегрузки............................... |
|
529 |
ê |
|
|
копирование................................................................. |
|
|
как операция инициализации............................. |
|
266 |
массивов.......................................................... |
|
116 |
строк................................................................. |
|
97 |
копирующий................................................................. |
|
|
конструктор............................................... |
|
43, 132 |
для динамического увеличения размера вектора |
||
.............................................................. |
|
263 |
комментарии............................................................. |
|
26 |
комментарии................................................................. |
|
|
блочные.............................................................. |
|
25 |
комплексные числа........................................... |
|
19, 127 |
выражения с участием..................................... |
|
155 |
заголовочный файл complex.............................. |
|
126 |
как абстракция класса..................................... |
|
30 |
представление................................................. |
|
157 |
операции.......................................................... |
|
158 |
типы данных........................................................ |
|
30 |
композиция................................................................... |
|
|
объектов.......................................................... |
|
982 |
сравнение с наследованием................................ |
|
978 |
константы................................................................... |
|
|
литерал............................................................. |
|
79 |
константные выражения.......................................... |
|
|
размер массива должен быть........................ |
|
114 |
sizeof() как пример...................................... |
|
163 |
подстановка...................................................... |
|
399 |
ссылки, рассматриваемые как.......................... |
|
105 |
конструктор(ы)........................................................... |
|
|
для базовых классов.............................................. |
|
|
при единичном наследовании........................... |
|
913 |
почленная инициализация.............................. |
|
947 |
для элементов массива............................................ |
|
|
список инициализации массива..................... |
|
707 |
вызовы виртуальных функций в........................ |
|
942 |
как коверторы.................................................. |
|
781 |
копирующие конструкторы......................... |
244, 699 |
почленная инициализация.............................. |
725 |
использование с контейнерами multimap и multiset |
|||
конструкторы по умолчанию................................ |
696 |
................................................................... |
|
320 |
|
ограничение возможности созданий объектов........ |
696 |
extern \................................................. |
387, 453, 454 |
||
список инициализации членов............................ |
719 |
extern, ключевое слово................................................ |
|
|
|
контейнерные типы....................................................... |
|
как директива связывания............................... |
|
366 |
|
емкость.................................................................. |
|
использование с членами пространства имен........ |
431 |
||
связь с размером......................................... |
267 |
объявление............................................................. |
|
|
|
и итераторы.................................................... |
274 |
константы.................................................... |
|
399 |
|
инициализация, с помощью пары итераторов........ |
271 |
объявления объектов............................................... |
|
|
|
параметры................................................ |
351, 362 |
без определения........................................... |
|
396 |
|
преимущества, автоматическое управление памятью |
размещение в заголовочном файле................... |
|
398 |
||
è ................................................................... |
416 |
f |
|
|
|
|
f, суффикс.................................................................. |
|
|
||
инструкции................................................................ |
|
нотация для литерала с плавающей точкой одинарной |
|||
break..................................................................... |
|
точности....................................................... |
|
77 |
|
для выхода из инструкции switch................ |
208 |
find_first_of(), обобщенный алгоритм............................ |
|
|
|
continue.......................................................... |
225 |
нахождение знаков препинания............................. |
|
289 |
|
do-while......................................................... |
223 |
нахождение первого символа в строке................. |
|
282 |
|
for219 |
|
find_last_ of()...................................................... |
|
288 |
|
goto................................................................ |
227 |
find_last_not_of()................................................ |
|
288 |
|
объявления....................................................... |
193 |
find(), обобщенный алгоритм.......................................... |
|
|
|
простые........................................................... |
190 |
поиск подстроки................................................ |
|
282 |
|
if 20, 205 |
|
поиск элемента отображения.............................. |
|
307 |
|
инструкция................................................................ |
|
for, инструкция.................................................... |
|
218 |
|
while................................................................. |
21 |
for, инструкция.......................................................... |
|
|
|
èìÿ83 |
|
использование с инструкцией if........................ |
|
198 |
|
разрешение............................................................ |
|
front_inserter(), адаптор функции................................ |
|
|
|
в области видимости класса........................ |
669 |
использование в операции push_front().............. |
592 |
||
квалифицированные имена......................................... |
|
front(), функция.......................................................... |
|
|
|
членов вложенных пространств имен............... |
428 |
поддержка очереди........................................... |
|
325 |
|
статических членов класса........................ |
640 |
fstream, класс........................................................... |
|
|
|
шаблонов функций как членов пространства имен |
файловый ввод / вывод..................................... |
|
1059 |
||
.............................................................. |
540 |
full(), функция............................................................ |
|
|
|
перегруженные операторы................................. |
744 |
модификация алгоритма динамического роста стека |
|||
переменной........................................................... |
84 |
................................................................... |
|
327 |
|
параметра шаблона.................................................. |
|
g |
|
|
|
функции |
493 |
|
|
||
getline(), функция |
279, 1084 |
||||
e |
|
||||
|
goto, инструкция................................................. |
|
228 |
||
end(), функция........................................................... |
|
greater_equal, объект-функция............................. |
|
587 |
|
итератор, использование................................... |
269 |
greater, объект-функция....................................... |
|
586 |
|
endl, манипулятор потока iostream............................ |
27 |
î |
|
|
|
è |
|
|
|
||
|
очереди................................................................ |
|
326 |
||
использование преобразования квалификаторов........ |
463 |
очереди...................................................................... |
|
|
|
использование шаблонов............................................. |
62 |
очереди с приоритетами............................ |
325, 326 |
||
итератор с произвольным доступом........................... |
599 |
queue, заголовочный файл................................. |
|
325 |
|
итератор(ы)......................................................... |
125 |
size()............................................................... |
|
325 |
|
адаптор............................................................ |
573 |
top(), функция................................................. |
|
326 |
|
абстракция, использование а обобщенных алгоритмах |
очередь с приоритетами........................................ |
|
325 |
||
для обхода................................................... |
568 |
size()............................................................... |
|
325 |
|
доступ к подмножеству контейнера с помощью....... |
270 |
ï |
|
|
|
категории |
599 |
|
|
||
перечисления |
|
114 |
|||
категории.............................................................. |
|
|
|||
двунаправленный итератор........................... |
599 |
расширение типа при разрешении перегрузки |
|
||
итератор чтения......................................... |
598 |
функции...................................................... |
|
466 |
|
итератор записи......................................... |
598 |
основания для включения в язык........................ |
|
111 |
|
однонаправленный итератор............................ |
599 |
переменные................................................................... |
|
|
|
end(), доступ к элементам контейнера................. |
269 |
константные...................................................... |
|
101 |
|
iterator, заголовочный файл............................... |
594 |
параметр(ы)................................................................ |
|
|
|
требования к поведению, выдвигаемые обобщенными |
размер, важность для передачи по значению....... |
338 |
|||
алгоритмами................................................. |
600 |
параметры функций...................................................... |
|
355 |
|
e |
|
использования многоточия................................... |
|
||
|
при разрешении перегруженных функций........... |
444 |
|||
equal_range(), обобщенный алгоритм............................. |
|
проверка типов.................................................. |
|
337 |
сравнение параметров указательного и ссылочного
типов........................................................... |
346 |
сравнение с глобальными объектами................... |
363 |
списки параметров............................................ |
335 |
ссылки.................................................... |
109, 343 |
ссылки.................................................................. |
|
использование для возврата нескольких |
|
значений................................................. |
199 |
на константы................................................ |
342 |
преимущества в эффективности.................... |
341 |
указатели....................................................... |
339 |
указатели на функции...................................... |
385 |
перестановки, обобщенные алгоритмы....................... |
605 |
î |
|
обратная косая черта (............................................... |
|
как префикс escape-последовательности............. |
77 |
обратные итераторы.............................................. |
593 |
область видимости...................................................... |
|
видимость класса.................................................. |
|
и определение класса................................... |
610 |
параметра шаблона.................................................. |
|
функции...................................................... |
496 |
объявлений исключений в catch-обработчиках...556 |
|
управляющих переменных в инструкции for........ |
392 |
область видимости глобального пространства имен..389, 419
í
наилучшая из устоявших функций......................... |
456 |
неоднозначность........................................................... |
|
перегруженных.......................................................
функций, диагносцирование во время разрешения
перегрузки............................................ |
|
468 |
шаблона функции..................................................... |
|
|
конкретизация, опасность перегрузки.......... |
|
521 |
указателя, стандартные преобразования........... |
|
470 |
î |
|
|
обобщенные алгоритмы................................................... |
|
|
генерирования.................................................. |
|
602 |
алфавитный указатель (приложение)............... |
|
1202 |
работа с хипом.................................................. |
|
603 |
категории и описания........................................ |
|
603 |
использование итераторов................................. |
|
599 |
независимость от типа.............................. |
568, 569 |
|
обзор................................................................ |
|
572 |
пример использования........................................ |
|
581 |
нотация для диапазона элементов........................ |
|
599 |
удаления.......................................................... |
|
602 |
ì |
|
|
меньше, оператор.......................................................... |
|
|
поддержка в арифметических типах данных........ |
30 |
|
требование о поддержке типом элементов контейнера |
||
................................................................... |
|
268 |
ï |
|
|
память........................................................................ |
|
|
утечка.............................................................. |
|
35 |
ì |
|
|
массив(ы)................................................................... |
|
|
в сравнении с векторами................................... |
|
123 |
динамическое выделение и освобождение................... |
|
|
массивов объектов классов................... |
710, 770 |
|
размер, не является частью типа параметра.... |
346 |
как параметры функций..................................... |
350 |
для передачи нескольких параметров............ |
362 |
преобразование массива в указатель............ |
462 |
многомерные................................................... |
349 |
индексирование........................................... |
31, 117 |
индексирование....................................................... |
|
отсутствие контроля выхода за границы |
|
диапазона................................................ |
117 |
инициализация........................................... |
31, 116 |
динамически выделенных массивов объектов |
|
класса................................................... |
710 |
использование оператора sizeof()....................... |
160 |
перегруженный оператор......................................... |
|
new[]......................................................... |
768 |
обход...................................................................... |
|
с помощью пары итераторов............................ |
272 |
с помощью манипуляции указателем................ |
119 |
объектов класса.............................................. |
712 |
поддержка обобщенными алгоритмами.................... |
569 |
определение................................................ |
30, 114 |
многомерные........................................................ |
119 |
связь с типом указателей................................ |
122 |
указателей на функции..................................... |
382 |
î |
|
обход.......................................................................... |
|
заполнение множества с помощью.......................... |
314 |
использование с контейнерами multimap и multiset |
|
................................................................... |
319 |
невозможность обхода перечислений................... |
113 |
параллельный обход двух векторов.................... |
305 |
обход отображения............................................ |
312 |
множества........................................................ |
316 |
отображения текста на вектор позиций.............. |
310 |
объект(ы)................................................................... |
|
члены пространства имен................................... |
421 |
автоматические............................................... |
402 |
использование памяти.......................................... |
82 |
переменные как.................................................... |
81 |
определение........................................................ |
87 |
объектно-ориентированное программирование.................... |
|
проектирование....................................................... |
|
(пример)........................................................ |
55 |
объектное программирование.................................... |
609 |
объекты-функции.................................................. |
590 |
объекты-функции........................................................ |
|
логические...................................................... |
587 |
использование в обобщенных алгоритмах.............. |
569 |
источники........................................................ |
583 |
functional, заголовочный файл.......................... |
583 |
предопределенные.............................................. |
585 |
объявление.................................................................. |
|
инструкция....................................................... |
14 |
объявления.................................................................. |
|
в части инициализации цикла for.................... |
216 |
видимость имени, вводимого объявлением............... |
389 |
и определение................................................... |
396 |
класса bitset......................................................... |
|
объектов...................................................... |
170 |
локальность..................................................... |
192 |
исключения...................................................... |
554 |
перегруженное........................................................ |
|
оператора.................................................... |
132 |
функции...................................................... |
443 |
пространства имен............................................ |
420 |
сопоставление объявлений в разных файлах....... |
396 |
шаблона функции..................................................... |
|
определение используемых имен...................... |
532 |
связь с определением................................... |
531 |
требования к размещению явных объявлений |
|
конкретизации........................................ |
512 |
указателя на функцию...................................... |
378 |
включение спецификации исключений в........ |
564 |
функции........................................................... |
332 |
задание аргументов по умолчанию................... |
352 |
размещение в заголовочном файле................... |
398 |
функции-члена, перегруженное.......................... |
795 |
явной конкретизации............................................... |
|
шаблона класса............................................ |
855 |
í |
|
неявные преобразования типов................................. |
178 |
ï
предостережения........................................................
использование знакового бита в битовых векторах
неопределенность...................................................................порядка вычисления бинарных |
167 |
|
|
операторов сравнения................................... |
147 |
подводные камни........................................................ |
|
глобальные объекты..................................... |
361 |
возврата ссылки на объект.......................... |
360 |
опасности приведения типов................................ |
180 |
представление............................................................ |
|
строк................................................................. |
92 |
преобразование............................................................
бинарного объекта-функции в унарный, использование
адаптора-связывателя................................ |
|
588 |
выведение аргументов шаблона функции.............. |
501 |
|
выбор преобразования между типами классов...... |
793 |
|
квалификаторов...................................................... |
|
|
влияние на последовательность преобразований |
||
.............................................................. |
|
484 |
при выведении аргументов шаблона функции... |
502 |
|
как точное соответствие при разрешении |
|
|
перегрузки функции.................................... |
|
473 |
конверторы....................................................... |
|
459 |
определенное пользователем................................ |
|
459 |
множественные, разрешение неоднозначности |
|
|
приведения.................................................. |
|
482 |
последовательности................................................ |
|
|
определенных пользователем преобразований... |
785 |
|
определенных пользователем, с учетом |
|
|
наследования......................................... |
|
1053 |
стандартных преобразований........................ |
|
486 |
с потерей точности, предупреждение компилятора |
||
................................................................... |
|
336 |
стандартное..................................................... |
|
471 |
трансформация I-значения...................................... |
|
|
ранжирование при разрешении перегрузки |
|
|
функции.................................................. |
|
482 |
указателей............................................................ |
|
|
в тип void* и обратно................................... |
|
180 |
явные преобразования типов............... |
144, 177, 180 |
|
препроцессор.............................................................. |
|
|
комментарий............................................................ |
|
|
парный(/**/)................................................... |
|
25 |
константы............................................................... |
|
|
__cplusplus__.............................................. |
|
23 |
макросы.................................................................. |
|
|
шаблоны функций как более безопасная |
|
|
альтернатива......................................... |
|
489 |
предкомпилированные заголовочные файлы............ |
|
398 |
приведение(я)....................................................... |
|
144 |
для принудительного установления точного |
|
|
соответствия.............................................. |
|
464 |
выбор конкретизируемого шаблона функции......... |
|
500 |
const_cast, оператор, опасность применения,.......182 |
||
dynamic_cast (), оператор.............................. |
|
1024 |
dynamic_cast()..................................................... |
|
|
идентификация класса объекта во время |
|
|
выполнения............................................... |
|
184 |
опасности.......................................................... |
|
182 |
сравнение нового синтаксиса со старым............. |
|
183 |
старый синтаксис........................................... |
|
185 |
reinterpret_cast..................................................... |
|
|
опасности..................................................... |
|
183 |
reinterpret_cast, оператор................................ |
|
183 |
static_cast............................................................. |
|
|
сравнение с неявными преобразованиями......... |
|
181 |
static_cast, оператор........................................ |
|
182 |
примеры....................................................................... |
|
|
класс IntArray.................................................. |
|
46 |
IntSortedArray, производный класс................ |
|
54 |
класс iStack......................................................... |
|
|
преобразование в шаблон stack...................... |
|
329 |
поддержка динамического выделения памяти... |
327 |
|
класс String.................................................... |
|
140 |
обработка аргументов в командной строке............ |
|
370 |
шаблон класса Array.............................................. |
|
|
SortedArray, производный класс................ |
|
1014 |
функция sort.................................................... |
|
377 |
применение для подавления оптимизации.................... |
|
129 |
присваивание.............................................................. |
|
|
векторам, сравнение с встроенными массивами.... |
124 |
|
и поведение auto_ptr......................................... |
|
410 |
комплексных чисел............................................ |
|
156 |
оператор................................................................. |
|
|
и требования к l-значению.............................. |
|
82 |
перегруженный.................................... |
728, 752 |
|
составной.................................................... |
|
152 |
последовательному контейнеру............................ |
|
277 |
ссылке............................................................ |
|
108 |
указателю на функцию............................................
вопросы, связанные с перегруженностью функции
проверка .............................................................. |
453 |
|
|
òèïà....................................................................... |
|
назначение и опасности приведения типов....... |
183 |
параметра.................................................... |
337 |
объявления, разнесенного по нескольким файлам |
|
.............................................................. |
397 |
неявные преобразования................................ |
336 |
отмена с помощью многоточия в списке параметров |
|
.............................................................. |
354 |
указателя.................................................... |
89 |
программа................................................................. |
21 |
производительность..................................................... |
|
auto_ptr.......................................................... |
410 |
классы, локальность ссылок............................. |
193 |
компиляции.............................................................. |
|
при конкретизации шаблонов функций............. |
512 |
контейнеров............................................................ |
|
компромиссы при выборе контейнера................ |
260 |
сравнение списка и вектора......................... |
263 |
определения шаблона функции в заголовочном файле
...................................................................510
сравнение обработки исключений и вызовов функций
ссылок................................................................... |
566 |
|
|
параметры и типы возвращаемых значений..... |
402 |
указателей на функции........................................... |
|
проигрыш по сравнению с параметрами-ссылками |
|
.............................................................. |
556 |
проигрыш по сравнению со встроенными функциями |
|
.............................................................. |
575 |
сравнение с объектами-функциями................. |
582 |
функций................................................................. |
|
передачи аргументов по значению.................. |
338 |
производные классы..................................................... |
|
конструкторы................................................... |
910 |
присваивание почленное...................................... |
945 |
пространства имен....................................................... |
|
члены..................................................................... |
|
определения................................................. |
430 |
шаблоны функций.......................................... |
540 |
требование правила одного определения.......... |
431 |
безымянные............................................................. |
|
отличие от других пространств имен............ |
432 |
глобальное.............................................................. |
|
проблема загрязнения пространства имен....... |
419 |
вложенные............................................................... |
|
и using-объявления..................................... |
449 |
область видимости........................................... |
389 |
определения...................................................... |
424 |
определенные пользователем............................... |
420 |
процедурное программирование....................................... |
|
(часть 3)........................................................ |
608 |
i |
|
if, инструкция...................................................... |
205 |
I |
|
If, инструкция........................................................... |
|
условный оператор как альтернатива................ |
158 |
ï |
|
по умолчанию................................................................ |
|
аргументы........................................................ |
354 |
влияние на выбор устоявших функций................ |
486 |
ì |
|
модели компиляции........................................................ |
|
шаблонов класса..................................................... |
|
с разделением.............................................. |
853 |
шаблонов функций.............................................. |
514 |
шаблонов функций.................................................... |
|
с включением............................................... |
510 |
с разделением.............................................. |
512 |
î |
|
оператор \............................................................. |
146 |
оператор ввода........................................................ |
27 |
оператор вывода................................................... |
1062 |
перегрузка.................................................... |
1085 |
оператор вызова функции....................................... |
754 |
операторы................................................................... |
|
встроенные............................................................. |
|
арифметические.......................................... |
145 |
sizeof......................................................... |
163 |
перегруженные....................................................... |
|
члены и не-члены класса.............................. |
743 |
взятия индекса ([])..................................... |
752 |
вопросы проектирования................................ |
746 |
delete......................................................... |
766 |
ï |
|
побитовый(е)................................................................ |
|
оператор И (&)................................................. |
165 |
оператор И с присваиванием (&=).............. |
153, 165 |
оператор ИЛИ (!).............................................. |
166 |
оператор ИСКЛЮЧАЮЩЕЕ ИЛИ (^)................ |
166 |
оператор НЕ (~)................................................ |
165 |
оператор сдвига (<<,>>).................................. |
166 |
операторы......................................................... |
167 |
поддержка в классе bitset........................... |
171 |
повторное возбуждение................................................. |
|
исключения...................................................... |
559 |
позиция....................................................................... |
|
разрешение аргумента по позиции в списке......... |
352 |
î |
|
определения............................................................. |
16 |
класса.................................................................. |
|
сравнение с определением класса.................. |
618 |
класса-диспетчера запросов (пример)............... |
956 |
исключений, как иерархий классов................ |
1031 |
массива........................................................... |
114 |
объекта........................................................... |
395 |
объектов класса complex................................ |
127 |
производного класса.......................................... |
895 |
пространств имен.............................................. |
433 |
пространств имен.................................................... |
|
членов......................................................... |
430 |
множеств.......................................................... |
316 |
многомерных массивов......................................... |
118 |
последовательных контейнеров........................... |
269 |
typedef............................................................ |
127 |
ï |
|
поиск.......................................................................... |
|
подстрок........................................................... |
288 |
rfind()............................................................. |
287 |
элементов............................................................... |
|
множества.................................................... |
315 |
отображения текста.................................... |
308 |
Ï |
|
ПОО (правило одного определения).............................. |
395 |
ì |
|
множество (set), контейнерный тип................................. |
|
ограничение на изменение порядка....................... |
603 |
определени........................................................ |
315 |
сравнение с отображением................................. |
301 |
size()............................................................... |
316 |
многоточие (...)............................................................. |
|
использование в типах функций.......................... |
379 |
ï |
|
последовательные контейнеры....................................... |
|
вставка элементов............................................ |
274 |
перестановка элементов..................................... |
277 |
обобщенные алгоритмы........................................ |
278 |
присваивание................................................... |
277 |
определение...................................................... |
265 |
псевдоним(ы)................................................................ |
|
имен типов, typedef........................................... |
128 |
пространства имен...................................... |
66, 435 |
i
insert(), функция........................................................ |
|
вставка символов в строку............................... |
295 |
реализация..................................................... |
274 |
списки............................................................. |
228 |
inserter, класс..................................................... |
314 |
inserter(), адаптор функции......................................... |
|
для вставки с помощью insert().......................... |
593 |
î |
|
отрицатели................................................................ |
|
как адапторы функций....................................... |
588 |
ошибки........................................................................ |
|
в инструкции if............................................... |
195 |
в циклах.......................................................... |
200 |
в циклах................................................................ |
|
зацикливание................................................ |
94 |
бесконечная рекурсия..................................... |
363 |
динамического выделения памяти........................ |
408 |
висячие указатели......................................... |
402 |
как избежать............................................. |
407 |
assert(), макрос................................................ |
233 |
компиляции, конфликты в области видимости using- |
|
объявления.................................................. |
451 |
итератор, использование................................... |
232 |
области видимости, подводные камни using- |
|
директивы.................................................. |
440 |
массив................................................................... |
|
индекс за концом............................................. |
95 |
пропуска................................................................. |
|
завершающего нуля в C-строке.................... |
415 |
скобок при освобождении динамически выделенного |
|
массива.................................................. |
416 |
смещения на единицу при доступе к массиву......... |
31 |
фазы связывания при наличии объявления в |
|
нескольких файлах...................................... |
396 |
Î |
|
Ошибки........................................................................ |
|
конкретизации шаблона функции........................ |
499 |
î |
|
отображения......................................................... |
319 |
заполнение......................................................... |
302 |
невозможность переупорядочения........................ |
603 |
map, заголовочный файл.................................... |
302 |
текста.................................................................. |
|
определение................................................. |
307 |
i |
|
iostream библиотека................................................... |
|
ââîä....................................................................... |
|
istream_iterator.......................................... |
595 |
итераторы....................................................... |
598 |
манипуляторы.......................................................... |
|
endl.............................................................. |
27 |
операторы, сцепление.......................................... |
27 |
iostream.h, заголовочный файл, пример |
|
использования.............................................. |
578 |
isalpha(), функция................................................ |
211 |
ctype, заголовочный файл.................................. |
292 |
isdigit(), функция....................................................... |
|
ctype, заголовочный файл.................................. |
292 |
ispunct(), функция...................................................... |
|
ctype, заголовочный файл.................................. |
292 |
isspace(), функция...................................................... |
|
ctype, заголовочный файл.................................. |
292 |
istream_iterator................................................... |
596 |
l |
|
l-значение............................................................... |
81 |
как возвращаемое значение, подводные камни........ |
360 |
преобразования................................................. |
461 |
преобразование точного соответствия........... |
459 |
точное соответствие при разрешении |
|
перегрузки функций............................... |
471 |
оператор присваивания, требования................... |
149 |
трансформация......................................... |
464, 483 |
less_equal, объект-функция.................................. |
587 |
less, объект-функция............................................ |
587 |
m |
|
main().................................................................... |
15 |
map, заголовочный файл.............................................. |
|
использование с контейнером multimap............... |
319 |
merge(), обобщенный алгоритм....................................... |
|
специализированная версия для спискаов.......... |
604 |
modulus, объект-функция..................................... |
586 |
multimap (мультиотображение), контейнер............. |
322 |
multiplies, объект-функция................................... |
585 |
Ñ |
|
Ñ, ÿçûê...................................................................... |
|
функции................................................................. |
|
указатели на функции.................................. |
385 |
ñ |
|
сравнения................................................................... |
|
объекты-функции.............................................. |
586 |
операторы............................................................... |
|
поддержка в контейнерах.............................. |
267 |
n |
|
negate, объект-функция........................................ |
586 |
ñ |
|
сложения (+) оператор................................................. |
|
комплексных чисел............................................ |
155 |
символ(ы).................................................................... |
|
литералы............................................................... |
|
синтаксис записи.......................................... |
77 |
массив символов, инициализация................ |
115, 116 |
нулевой, для завершения строкового литерала.....78 |
|
символы....................................................................... |
|
(обратная косая черта знак вопроса)...................... |
|
escape-последовательность \......................... |
77 |
^ (крышка).............................................................
оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ 165
^= (крышка равно)..................................................
оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ с
присваиванием......................................... |
165 |
__STDC__....................................................... |
23 |
_обратная косая черта одиночная кавычка)............. |
|
escape-последовательность \......................... |
77 |
- (минус).................................................................
использование для обозначения опций в командной
строке................................................... |
370 |
-- (двойной минус).................................................... |
|
оператор декремента.................................... |
153 |
-= (минус равно)...................................................... |
|
оператор вычитания с присваиванием............ |
153 |
-> (минус правая угловая скобка)........................... |
|
оператор \.................................................... |
757 |
, (запятая)............................................................. |
|
неправильное применение для индексации массива
.............................................................. |
119 |
оператор...................................................... |
164 |
; (точка с запятой)................................................. |
|
для завершения инструкций........................ |
189 |
: (двойное двоеточие):оператор разрешения области
видимости |
....................................................426 |
: (двойное двоеточие):оператор разрешения области
видимости класса.......................................... |
43 |
! (восклицательный знак)....................................... |
|
оператор \............................................ |
145, 147 |
?\
(знак вопроса двоеточие):условный оператор 134,
158 |
|
(знак вопроса двоеточие):условный |
|
оператор:сокращенная запись if-else........ |
203 |
. (точка)................................................................ |
|
оператор \...................................................... |
38 |
... (многоточие).................................................. |
355 |
для обозначения универсального catch- |
|
обработчика........................................... |
560 |
() (круглые скобки)...............................................
использование оператора вызова для передачи
объекта-функции.................................... |
582 |
(обратная косая черта a)....................................... |
|
escape-последовательность \......................... |
77 |
(обратная косая черта n)....................................... |
|
escape-последовательность \......................... |
77 |
(обратная косая черта v)....................................... |
|
escape-последовательность \......................... |
77 |
(обратная косая черта).......................................... |
|
как escape-символ....................................... |
289 |
[,) (левая квадрнатная, правая круглая скобки)..... |
|
для обозначения интервала с включенной левой |
|
границей................................................ |
599 |
[] (квадратные скобки)...........................................
для освобождения выделенной под массив памяти
.............................................................. |
415 |
оператор взятия индекса ............................ |
753 |
оператор взятия индекса:для доступа к вектору |
|
.............................................................. |
122 |
оператор взятия индекса:для проверки битов в |
|
битовом векторе...................................... |
169 |
оператор взятия индекса:не поддерживается |
|
для контейнеров multiset и multimap...... |
322 |
оператор индексирования массива, перегрузка в |
|
определении класса массива...................... |
45 |
{} (фигурные скобки)............................................. |
|
как ограничители составной инструкции...... |
189 |
использование в объявлениях пространств имен |
|
.............................................................. |
421 |
использование в предложении catch............... |
552 |
использование в составной директиве |
|
связывания............................................ |
366 |
при инициализации вложенного массива.......... |
118 |
* (звездочка)......................................................... |
|
оператор разыменования:доступ к объектам с |
|
помощью..................................................... |
90 |
оператор разыменования:как унарный оператор141 |
|
оператор разыменования:использование для |
|
задания типа возвращаемого значения....... |
378 |
оператор разыменования:приоритет................ |
120 |
оператор разыменования:определение указателей |
|
с помощью................................................... |
88 |
оператор умножения:характеристики и |
|
синтаксис.............................................. |
143 |
*= (звездочка равно).............................................. |
|
оператор умножения с присваиванием.............. |
153 |
/ (косая черта)...................................................... |
|
оператор деления:характеристики и синтаксис |
|
/= (косая..............................................................черта равно) |
143 |
|
|
оператор деления с присваиванием................ |
153 |
\\ (двойная обратная косая черта)........................... |
|
escape-последовательность \......................... |
77 |
\\ \ 77 |
|
\\t (обратная косая черта t)................................... |
|
escape-последовательность |
|
горизонтальнаятабуляция......................... |
77 |
& (амперсанд).........................................................
оператор взятия адреса:как унарный оператор
.............................................................. |
141 |
оператор взятия адреса:использование с именем |
|
функции.................................................. |
165 |
&& (двойной амперсанд).......................................... |
|
оператор логического И................................ |
142 |
&= (амперсанд равно).............................................. |
|
оператор побитового И с присваиванием:как |
|
оператор составного присваивания............ |
152 |
% (процент)............................................................
оператор вычисления остатка, характеристики
и синтаксис........................................... |
143 |
%= (процент равно).................................................
оператор вычисления остатка с присваиванием
..............................................................153
+ (ïëþñ).................................................................
оператор сложения:поддержка в арифметических
типах данных............................................. |
|
30 |
++ (двойной плюс)................................................... |
|
|
оператор инкремента............................. |
153, 761 |
|
+= (плюс равно)...................................................... |
|
|
оператор сложения с присваиванием.............. |
146 |
|
< (левая угловая скобка)....................................... |
|
|
оператор \.................................... |
267, 574, 581 |
|
<< (двойная левая угловая скобка)......................... |
|
|
оператор вывода............................................. |
|
26 |
оператор сдвига влево................................. |
|
165 |
<<=(двойная левая угловая скобка равно)............... |
|
|
оператор левого сдвига с присваиванием....... |
153 |
|
<> (угловые скобки).............................................. |
|
|
явный шаблон:применение в специализациях... |
514 |
|
явный шаблон:спецификации аргументов......... |
505 |
|
= (равно)................................................................ |
|
|
оператор присваивания................................. |
|
101 |
оператор присваивания:и l-значение................ |
82 |
|
оператор присваивания:использование с |
|
|
объектами классов.................................... |
|
39 |
оператор присваивания:использование с |
|
|
псевдонимами пространств имен.................. |
|
434 |
== (двойное равно)................................................... |
|
|
оператор равенства:поддержка в |
|
|
арифметических типах данных................... |
|
30 |
>> (двойная правая угловая скобка)....................... |
|
|
оператор ввода........................................... |
|
1079 |
оператор ввода:перегрузка........................ |
|
1092 |
оператор сдвига вправо................................ |
|
165 |
>>=(двойная правая угловая скобка равно).............. |
|
|
оператор правого сдвига с присваиванием...... |
153 |
|
| (вертикальная черта).......................................... |
|
|
оператор побитового ИЛИ.............................. |
|
165 |
|= (вертикальная черта равно).............................. |
|
|
оператор побитового ИЛИ с присваиванием..... |
165 |
оператор побитового ИЛИ с присваиванием:как
оператор составного присваивания............ |
153 |
|
|| (двойная вертикальная черта)............................. |
|
|
оператор логического |
ИЛИ:характеристики и |
|
синтаксис.............................................. |
|
145 |
оператор логического ИЛИ:вычисление........ |
146 |
|
n |
|
|
new оператор.............................................................. |
|
|
для константных объектов................................. |
|
417 |
для объектов классов....................................... |
|
762 |
использование класса распределителя памяти |
|
|
(сноска)...................................................... |
|
265 |
ñ |
|
|
сокрытие информации....................................... |
39, 614 |
|
члены глобальной области видимости, доступ с |
|
|
помощью оператора разрешения области видимости |
||
................................................................... |
|
425 |
вопросы, связанные с вложенными пространствами |
||
èìåí............................................................. |
|
427 |
доступ к................................................................. |
|
|
закрытым членам класса.............................. |
623 |
|
имена в локальной области видимости.................. |
391 |
|
параметры шаблона, имена в глобальной области |
|
|
видимости.................................................... |
|
493 |
объявление члена пространства имен, обход с помощью |
||
оператора разрешения области видимости..... |
424 |
|
сравнение с перегрузкой.................................. |
|
448 |
во вложенных областях видимости................. |
475 |
|
списки........................................................................ |
|
|
как последовательный контейнер........................ |
269 |
|
обобщенные........................................................ |
|
255 |
поддержка операций merge() и sort()................ |
278 |
|
merge(), обобщенный алгоритм.................................. |
|
|
специализированная реализация для списка.604 |
||
сравнение с векторами...................................... |
|
261 |
требования к вставке и доступу....................... |
260 |
|
size()............................................................... |
|
227 |
составные................................................................... |
|
|
выражения....................................................... |
|
142 |
присваивания......................................................... |
|
|
операторы над комплексными числами.............. |
156 |
|
состояния условий...................................................... |
|
|
в применении к библиотеке iostream................. |
1104 |
ссылки.......................................................................
для объявления исключения в catch-обработчике
................................................................... |
559 |
как тип возвращаемого значения функции............ |
359 |
инициализация....................................................... |
|
ссылки на const.......................................... |
109 |
сравнение с указателями.................................. |
105 |
стек, контейнерный тип.......................................... |
325 |
стек, контейнерный тип................................................ |
|
операции (таблица).......................................... |
323 |
stack, заголовочный файл.................................. |
323 |
top(), функция......................................... |
155, 323 |
стека, пример класса............................................ |
189 |
статические члены класса........................................ |
|
указатели на.................................................... |
655 |
статические объекты................................................ |
|
объявление, сравнение с безымянным пространством |
|
èìåí............................................................. |
433 |
статическое выделение памяти................................ |
33 |
строки........................................................................ |
|
append()......................................................... |
297 |
assign()........................................................... |
|
296 |
compare()....................................................... |
|
298 |
erase()..................................................... |
276, 294 |
|
поиск подстроки................................. |
288, 295, 299 |
|
insert()............................................................ |
|
275 |
replace()......................................................... |
|
300 |
swap()..................................................... |
277, 297 |
|
n |
|
|
not_equal_to, объект-функция.................................... |
|
|
(êîä)................................................................ |
|
586 |
not2(), адаптор функции.............................................. |
|
|
как адаптор-отрицатель................................... |
|
588 |
numeric, заголовочный файл.................................. |
|
601 |
использование численных обобщенных алгоритмов. 602 |
||
ø |
|
|
шаблоны классов.......................................................... |
|
|
(глава)............................................................ |
|
873 |
частичные специализации............................... |
|
861 |
члены..................................................................... |
|
|
функций...................................................... |
|
832 |
вложенные типы................................................. |
|
843 |
и пространства имен.......................................... |
|
865 |
параметры........................................................ |
|
815 |
параметры-типы........................................... |
|
823 |
объявления друзей в........................................ |
|
838 |
модели компиляции.............................................. |
|
855 |
модели компиляции................................................... |
|
|
с включением............................................... |
|
850 |
с разделением.............................................. |
|
854 |
определения...................................................... |
|
818 |
разрешение имен в........................................ |
|
863 |
статические члены классов............................ |
|
840 |
точка конкретизации, для функций-членов........ |
863 |
|
явные..................................................................... |
|
|
специализации............................................ |
|
859 |
шаблоны функций.......................................................... |
|
|
(глава)............................................................ |
|
545 |
разрешение имен в определениях........................ |
|
535 |
разрешение перегрузки при конкретизации....... |
530 |
|
и пространства имен.......................................... |
|
540 |
конкретизации................................................. |
|
500 |
передача объектов-функций шаблону.................. |
|
584 |
перегрузка...................................................... |
|
522 |
параметры..............................................................
для повышения гибкости обобщенных алгоритмом
.............................................................. |
581 |
параметры-константы................................... |
491 |
параметры-типы........................................... |
491 |
определение...................................................... |
497 |
тип возвращаемого значения и выведение аргументов |
|
шаблона........................................................ |
506 |
явные..................................................................... |
|
спецаиализации.......................................... |
519 |
ô |
|
ôàéë(û)...................................................................... |
|
ввод/вывод.......................................................... |
29 |
входной................................................................... |
|
открытие...................................................... |
29 |
выходной................................................................. |
|
открытие...................................................... |
29 |
несколько...............................................................
размещение определения пространства имен в. 423
сопоставление объявлений в.......................... |
396 |
ò
òåëî............................................................................ |
|
|
функции........................................................... |
|
331 |
ó |
|
|
угловые скобки (<>)................................................... |
|
|
шаблон.................................................................... |
|
|
использование для определения....................... |
|
56 |
явные..................................................................... |
|
|
специализации шаблона................................ |
|
514 |
спецификации аргументов шаблона................ |
|
505 |
ö |
|
|
целые......................................................................... |
|
|
расширение типа.............................................. |
|
179 |
стандартные преобразования............................. |
|
178 |
при разрешении перегрузки функции............ |
|
467 |
типы данных........................................................ |
|
75 |
ó |
|
|
указатели.............................................................. |
|
91 |
адресация............................................................. |
|
|
C-строк........................................................ |
|
93 |
объектов........................................................ |
|
89 |
объектов класса, использование оператора -> |
||
.............................................................. |
|
619 |
вектор указателей, преимущества.................... |
|
263 |
висячий................................................................ |
|
|
возвращенное значение, указывающее на |
|
|
автоматический объект........................... |
|
402 |
указывающий на освобожденную память.......... |
|
407 |
как значение, возвращаемое функцией................ |
|
382 |
как итераторы для встроенного массива............ |
|
273 |
использование в обобщенных алгоритмах.............. |
|
121 |
параметры................................................ |
339, 345 |
|
нулевой указатель........................................... |
|
469 |
нулевой указатель................................................. |
|
|
как операнд оператора delete........................ |
|
407 |
сравнение со ссылками................................ |
|
44, 108 |
sizeof(), использование с.................................. |
|
162 |
void*................................................................. |
|
90 |
указатели на члены............................................... |
|
655 |
указатели на члены..................................................... |
|
|
указатели на данные-члены............................... |
|
651 |
указатели на функции-члены............................ |
|
649 |
указатели на функции........................................... |
|
388 |
вызов по............................................................ |
|
381 |
и спецификации исключений............................. |
|
566 |
инициализация................................................. |
|
379 |
на перегруженные функции................................ |
|
454 |
написанные на других языках............................ |
|
386 |
присваивание................................................... |
|
379 |
сравнение с указателями на данные (сноска) |
........88 |
|
ö |
|
|
öèêë(û).................................................................. |
|
20 |
инструкции.......................................................... |
|
|
while.......................................................... |
|
221 |
завершение............................................................ |
|
|
break, инструкция...................................... |
|
223 |
инструкции........................................................... |
|
|
for218 |
|
|
while............................................................ |
|
21 |
ошибки программирования.................................... |
|
201 |
условие останова................................................ |
|
32 |
ò
òèï............................................................................. |
|
точное соответствие......................................... |
465 |
õ |
|
õèï............................................................... |
163, 405 |
выделение памяти для массива в........................ |
413 |
выделение памяти для объекта в........................ |
405 |
исключение bad_alloc...................................... |
406 |
обобщенные алгоритмы...................................... |
1200 |
См. также обобщенные алгоритмы................. |
1200 |
ò |
|
òèï(û)......................................................................... |
|
арифметические................................................ |
33 |
для определения нескольких объектов одного и того |
|
æå òèïà pair................................................ |
129 |
bool................................................................ |
111 |
C-строка........................................................... |
96 |
имя класса как................................................. |
611 |
использование с директивой препроцессора include |
|
..................................................................... |
67 |
typedef, синоним типа........................................ |
127 |
o |
|
ofstream, òèï...................................................... |
1102 |
ò |
|
точка конкретизации................................................... |
|
шаблона функции............................................... |
534 |
ó |
|
унарные операторы................................................. |
141 |
умножения оператор (*)................................................. |
|
поддержка в арифметических типах данных |
.........30 |
условный..................................................................... |
|
директивы препроцессора................................... |
21 |
инструкция........................................................... |
|
switch........................................................ |
214 |
оператор (?............................................................. |
|
):сравнение с функциями.............................. |
364 |
условный оператор....................................................... |
|
инструкция.................................................... |
189 |
ô
функции......................................................................
возвращаемые значения...........................................
локальный объект, проблема возвращения ссылки
íà........................................................... |
360 |
параметр-ссылка как средство возврата |
|
дополнительного значения.......................... |
340 |
объект класса как средство вернуть несколько |
|
значений................................................. |
363 |
указатель на функцию................................. |
384 |
вызовы................................................................... |
|
заключенные в try-блок................................ |
552 |
недостатки.................................................. |
365 |
сравнение с обработкой исключений.............. |
558 |
рекурсивные.................................................... |
364 |
и локальная область видимости......................... |
391 |
локальное хранение........................................... |
337 |
интерфейс............................................................. |
|
объявление функции как............................... |
333 |
прототип функции как описание...................... |
333 |
имя функции........................................................... |
|
преобразуется в указатель........................ |
379 |
на другом языке, директивы связывания........... |
366 |
обращение к...................................................... |
332 |
объявления............................................................. |
|
как члена пространства имен........................ |
420 |
объявления перегруженных функций.................. |
446 |
и область видимости.................................... |
452 |
когда не надо перегружать........................... |
448 |
причины для перегрузки функций................. |
443 |
преобразование функции в указатель................ |
463 |
определение...................................................... |
331 |
как часть шаблона функции......................... |
492 |
сравнение с объявлениями............................ |
395 |
сигнатура....................................................... |
335 |
òèï........................................................................ |
|
недопустимость возврата из функции............ |
334 |
преобразование в указатель на функцию....... |
359 |
тип возвращаемого значения............................... |
335 |
недопустимость указания для конструкторов.688 недостаточен для разрешения перегруженных
функций.................................................. |
|
445 |
функции-члены...................................... |
130, 614, 631 |
|
вызов............................................................... |
|
132 |
независимые от типа............................................ |
|
50 |
перегруженные....................................................... |
|
|
проблемы...................................................... |
|
448 |
функции-кандидаты...................................... |
|
795 |
модификация для обработки исключений............ |
547 |
|
определение...................................................... |
|
133 |
открытые............................................................... |
|
|
доступ к закрытым членам с помощью................ |
40 |
|
статические................................................... |
|
644 |
функции-кандидаты....................................... |
|
456, 479 |
для вызовов в области видимости класса........... |
789 |
|
для перегруженных операторов.......................... |
|
805 |
для шаблонов функций,.......................................523 |
||
вызов с аргументами типа класса...................... |
|
787 |
наследование и................................................ |
|
1051 |
p |
|
|
pair, класс........................................................... |
|
129 |
plus, объект-функция.................................... |
|
583, 585 |
pop_back(), функция..................................................
использование для реализации динамического роста
стека......................................................... |
327 |
push_back(), функция................................................ |
|
поддержка в контейнерах.................................. |
265 |
стеки, использования для динамического выделения |
|
памяти......................................................... |
327 |
push_front(), функция................................................ |
|
поддержка в списковых контейнерах.................. |
266 |
r |
|
r-значение............................................................... |
81 |
использование при вычислении выражений......... |
141 |
release()б функция...................................................... |
|
управление объектами с помощью класса auto_ptr
...................................................................413 reserve(), функция......................................................
использование для установки емкости контейнера
reset(),...................................................................функция |
263 |
|
|
установка указателя auto_ptr......................... |
411 |
resize(), функция........................................................ |
|
использование для изменения размера контейнера 267 |
|
return, инструкция..................................................... |
|
сравнение с выражением throw......................... |
547 |
s
sort(), обобщенный алгоритм.......................................... |
|
|
вызов............................................................... |
|
121 |
передача объекта=функции в качестве аргумента |
||
................................................................... |
|
584 |
stack, заголовочный файл....................................... |
|
323 |
static_cast, оператор................................................... |
|
|
опасности.......................................................... |
|
182 |
string, заголовочный файл........................................ |
|
67 |
string, строковый тип.............................................. |
|
99 |
пустая строка................................................... |
|
97 |
смешение объектов типа string и C-строк............ |
|
98 |
substr(), функция............................................. |
|
284 |
switch, инструкция.............................................. |
|
212 |
switch, инструкция.................................................... |
|
|
использование ключевого слова default...... |
206, 210 |
|
t |
|
|
this, указатель.................................................... |
|
637 |
tolower(), функция..................................................... |
|
|
преобразование заглавных букв в строчные....... |
292 |
|
toupper(), функция..................................................... |
|
|
ctype, заголовочный файл.................................. |
|
292 |
locale, заголовочный файл................................. |
|
292 |
true, ключевое слово.............................................. |
|
110 |
typedef...................................................................... |
|
|
для улучшения читабельности......................... |
|
381 |
как синоним существующего имени типа............... |
|
445 |
массива указателей на функции........................ |
|
381 |
typename............................................................. |
|
250 |
использование с параметрами шаблона функции.... |
495 |
|
u |
|
|
unexpected(), функция............................................... |
|
|
для обработки нераспознанных исключений......... |
|
563 |
unique_copy(), обобщенный алгоритм............................ |
|
|
запись целых чисел из вектора в стандартный |
|
|
вывод.......................................................... |
|
594 |
unique(), обобщенный алгоритм..................................... |
|
|
удаление дубликатов из вектора...................... |
|
573 |
using-директивы........................................................ |
|
|
влияние на разрешение перегрузки функции...... |
477 |
|
using-объявления.................................................. |
|
436 |
влияние на разрешение перегрузки функции...... |
476 |
|
для объявления перегруженных функций............ |
|
450 |
сравнение с using-директивами........................ |
|
440 |
v |
|
|
vector, заголовочный файл....................................... |
|
69 |
void........................................................................... |
|
|
в списке параметров функции............................ |
|
335 |
void*......................................................................... |
|
|
преобразование в void* как стандартное |
|
|
преобразование............................................ |
|
470 |
volatile, квалификатор.......................................... |
|
128 |
для типа параметра, в связи с перегрузкой |
|
|
функций...................................................... |
|
446 |
использование преобразования квалификаторов... |
485 |
|
w |
|
|
while, инструкция............................................... |
|
221 |
while, инструкция..................................................... |
|
|
сравнение с инструкциями for и do-while......... |
|
214 |
ÿ
явное...........................................................................
преобразование................................................. |
184 |
эффективность........................................................... |
|
ý |
|
сравнение с гибкостью при выделении памяти...... |
33 |