C++ и STL. Справочное руководство
Дэвид Р. Мюссер, Жилмер Дж. Дердж, Атул Сейни
Написанная авторами, принимавшими участие в разработке и практическом применении STL, данная книга представляет собой полное справочное руководство по данной теме. Она включает небольшой учебный курс, подробное описание каждого элемента библиотеки и большое количество примеров.
В книге вы найдете подробное описание итераторов, обобщенных алгоритмов, контейнеров, функциональных объектов и т.д. Ряд нетривиальных приложений демонстрирует использование мощи и гибкости STL в повседневной работе программиста. Книга также разъясняет, как интегрировать STL с другими объектно-ориентированными методами программирования. Она будет вашим постоянным спутником и советчиком при работе над проектами любой степени сложности. Во втором издании отражены все самые последние изменения в STL на момент написания книги; в нем появились новые главы и приложения. Множество новых примеров иллюстрируют отдельные концепции и технологии; большие демонстрационные программы показывают, как использовать STL в реальной разработке приложений на языке программирования C++.
Издательство: Вильямс, 2010 г.
ISBN 978-5-8459-1665-5, 978-0-321-70212-8
Количество страниц: 432.
Содержание книги «C++ и STL. Справочное руководство»:
- 27 Предисловие
- 32 Предисловие к первому изданию
- 33 Введение
- 33 Изменения во втором издании
- 34 Исторические сведения из предисловия к первому изданию
- 35 Что было потом
- 36 Благодарности из первого издания
- 36 Благодарности ко второму изданию
- 37 ЧАСТЬ I. ВВОДНЫЙ КУРС В STL
- 39 Глава 1. Введение
- 40 1.1. Для кого предназначена эта книга
- 40 1.2. Что такое обобщенное программирование
- 42 1.3. Обобщенное программирование и шаблоны C++
- 42 1.3.1. Шаблоны классов
- 44 1.3.2. Шаблоны функций
- 45 1.3.3. Шаблоны функций-членов
- 46 1.3.4. Явное указание аргументов шаблонов
- 47 1.3.5. Параметры шаблона по умолчанию
- 47 1.3.6. Частичная специализация
- 47 1.4. Шаблоны и проблема «разбухания кода»
- 48 1.5. Гарантии производительности STL
- 48 1.5.1. O-обозначения и связанные определения
- 49 1.5.2. Амортизированное время
- 50 1.5.3. Ограничения O-обозначений
- 51 Глава 2. Обзор компонентов STL
- 51 2.1. Контейнеры
- 51 2.1.1. Контейнеры последовательностей
- 55 2.1.2. Отсортированные ассоциативные контейнеры
- 56 2.2. Обобщенные алгоритмы
- 56 2.2.1. Обобщенный алгоритм find
- 59 2.2.2. Обобщенный алгоритм merge
- 61 2.3. Итераторы
- 64 2.4. Функциональные объекты
- 67 2.5. Адаптеры
- 70 2.6. Аллокаторы
- 51 2.1. Контейнеры
- 71 Глава 3. Отличие STL от других библиотек
- 71 3.1. Расширяемость
- 72 3.2. Взаимозаменяемость компонентов
- 73 3.3. Совместимость алгоритмов и контейнеров
- 75 Глава 4. Итераторы
- 75 4.1. Входные итераторы
- 77 4.2. Выходные итераторы
- 78 4.3. Однонаправленные итераторы
- 79 4.4. Двунаправленные итераторы
- 80 4.5. Итераторы с произвольным доступом
- 81 4.6. Иерархия итераторов STL: эффективная комбинация алгоритмов и контейнеров
- 83 4.7. Итераторы вставки
- 84 4.8. Еще раз о входе и выходе: потоковые итераторы
- 86 4.9. Спецификация категорий итераторов, требуемых алгоритмами STL
- 87 4.10. Разработка обобщенных алгоритмов
- 88 4.11. Почему некоторые алгоритмы требуют более мощные итераторы
- 89 4.12. Выбор правильного алгоритма
- 89 4.13. Константные и изменяемые итераторы
- 91 4.14. Категории итераторов, предоставляемые контейнерами STL
- 93 Глава 5. Обобщенные алгоритмы
- 93 5.1. Базовая организация алгоритмов в STL
- 93 5.1.1. Версии «на месте» и копирующие версии
- 95 5.1.2. Алгоритмы с функциональными параметрами
- 96 5.2. Неизменяющие алгоритмы над последовательностями
- 96 5.2.1. find
- 97 5.2.2. adjacent_find
- 98 5.2.3. count
- 99 5.2.4. for_each
- 100 5.2.5. mismatch и equal
- 102 5.2.6. search
- 104 5.3. Изменяющие алгоритмы над последовательностями
- 104 5.3.1. copy и copy_backward
- 105 5.3.2. fill
- 106 5.3.3. generate
- 107 5.3.4. partition
- 109 5.3.5. random_shuffle
- 110 5.3.6. remove
- 111 5.3.7. replace
- 111 5.3.8. reverse
- 111 5.3.9. rotate
- 112 5.3.10. swap
- 113 5.3.11. swap_ranges
- 114 5.3.12. transform
- 114 5.3.13. unique
- 116 5.4. Алгоритмы, связанные с сортировкой
- 116 5.4.1. Отношения сравнения
- 118 5.4.2. Неубывающее и невозрастающее упорядочения
- 119 5.4.3. sort, stable_sort и partial_sort
- 122 5.4.4. nth_element
- 123 5.4.5. binary_search, lower_bound, upper_bound и equal_range
- 125 5.4.6. merge
- 126 5.4.7. Теоретико-множественные операции над отсортированными структурами
- 127 5.4.8. Операции над пирамидами
- 129 5.4.9. Минимум и максимум
- 130 5.4.10. Лексикографическое сравнение
- 130 5.4.11. Генераторы перестановок
- 131 5.5. Обобщенные числовые алгоритмы
- 131 5.5.1. accumulate
- 132 5.5.2. partial_sum
- 133 5.5.3. adjacent_difference
- 134 5.5.4. inner_product
- 93 5.1. Базовая организация алгоритмов в STL
- 137 Глава 6. Последовательные контейнеры
- 138 6.1. Векторы
- 138 6.1.1. Типы
- 139 6.1.2. Конструирование последовательностей
- 143 6.1.3. Вставка
- 147 6.1.4. Удаление
- 149 6.1.5. Функции доступа
- 150 6.1.6. Отношения равенства и «меньше, чем»
- 151 6.1.7. Присваивания
- 152 6.2. Деки
- 154 6.2.1. Типы
- 154 6.2.2. Конструкторы
- 154 6.2.3. Вставка
- 155 6.2.4. Удаление
- 155 6.2.5. Аксессоры
- 155 6.2.6. Отношения равенства и «меньше, чем»
- 155 6.2.7. Присваивания
- 155 6.3. Списки
- 157 6.3.1. Типы
- 157 6.3.2. Конструкторы
- 157 6.3.3. Вставка
- 157 6.3.4. Удаление
- 159 6.3.5. Склейка
- 160 6.3.6. Функции-члены, связанные с сортировкой
- 161 6.3.7. Удаление
- 161 6.3.8. Аксессоры
- 162 6.3.9. Отношения равенства и «меньше, чем»
- 162 6.3.10. Присваивания
- 138 6.1. Векторы
- 163 Глава 7. Отсортированные ассоциативные контейнеры
- 164 7.1. Множества и мультимножества
- 164 7.1.1. Типы
- 165 7.1.2. Конструкторы
- 165 7.1.3. Вставка
- 168 7.1.4. Удаление
- 170 7.1.5. Аксессоры
- 172 7.1.6. Отношения эквивалентности и «меньше, чем»
- 173 7.1.7. Присваивание
- 173 7.2. Отображения и мультиотображения
- 174 7.2.1. Типы
- 174 7.2.2. Конструкторы
- 174 7.2.3. Вставка
- 178 7.2.4. Удаление
- 178 7.2.5. Аксессоры
- 179 7.2.6. Отношения равенства и «меньше, чем»
- 179 7.2.7. Присваивания
- 164 7.1. Множества и мультимножества
- 181 Глава 8. Функциональные объекты
- 181 8.1. Передача функций через указатели
- 183 8.2. Преимущества передачи функциональных объектов как параметров шаблонов
- 187 8.3. Функциональные объекты, предоставляемые STL
- 189 Глава 9. Адаптеры контейнеров
- 190 9.1. Адаптер стека
- 191 9.2. Адаптер очереди
- 193 9.3. Адаптер очереди с приоритетами
- 197 Глава 10. Адаптеры итераторов
- 201 Глава 11. Функциональные адаптеры
- 201 11.1. Связыватели
- 202 11.2. Инверторы
- 203 11.3. Адаптеры для указателей на функции
- 207 ЧАСТЬ II. ПРИМЕРЫ ПРОГРАММ
- 209 Глава 12. Программа для поиска в словаре
- 209 12.1. Поиск анаграмм данного слова
- 211 12.2. Работа со строками и потоками
- 213 12.3. Генерация перестановок и поиск в словаре
- 213 12.4. Полная программа
- 214 12.5. Насколько быстр разработанный код
- 217 Глава 13. Программа поиска всех групп анаграмм
- 217 13.1. Поиск групп анаграмм
- 218 13.2. Определение структуры данных для работы с STL
- 219 13.3. Создание функциональных объектов для сравнений
- 220 13.4. Полная программа поиска групп анаграмм
- 220 13.5. Чтение словаря в вектор объектов PS
- 221 13.6. Использование объекта сравнения для сортировки
- 221 13.7. Использование предиката эквивалентности для поиска равных элементов
- 222 13.8. Использование функционального адаптера для получения объекта предиката
- 222 13.9. Копирование группы анаграмм в выходной поток
- 223 13.10. Вывод программы
- 225 Глава 14. Улучшенная программа поиска групп анаграмм
- 225 14.1. Структура данных для хранения пар итераторов
- 226 14.2. Хранение информации в отображении списков
- 226 14.3. Упорядоченный по размерам вывод групп анаграмм
- 227 14.4. Улучшенная программа поиска анаграмм
- 228 14.5. Вывод программы
- 229 14.6. Причины использования отображения
- 231 Глава 15. Ускорение программы поиска анаграмм: использование мультиотображений
- 231 15.1. Поиск групп анаграмм, версия 3
- 234 15.2. Объявление мультиотображения
- 234 15.3. Чтение словаря в мультиотображение
- 234 15.4. Поиск групп анаграмм в мультиотображении
- 236 15.5. Упорядоченный по размерам вывод групп анаграмм
- 236 15.6. Вывод программы
- 236 15.7. Скорость работы программы
- 237 Глава 16. Определение класса итератора
- 237 16.1. Новый вид итератора: подсчитывающий итератор
- 238 16.2. Класс подсчитывающего итератора
- 243 Глава 17. STL и объектно-ориентированное программирование
- 244 17.1. Использование наследования и виртуальных функций
- 248 17.2. Устранение «разбухания кода»
- 249 Глава 18. Программа вывода дерева ученых в области теории вычислительных машин и систем
- 249 18.1. Сортировка аспирантов по датам
- 250 18.2. Связь аспирантов с руководителями
- 251 18.3. Поиск корней дерева
- 254 18.4. Чтение файла
- 255 18.5. Вывод результатов
- 256 18.6. Полный исходный текст программы
- 259 Глава 19. Класс для хронометража обобщенных алгоритмов
- 259 19.1. Препятствия точному хронометражу алгоритмов
- 260 19.2. Преодоление препятствий
- 262 19.3. Уточнение метода
- 263 19.4. Автоматизация анализа при помощи класса
- 265 19.4.1. Вывод результатов
- 267 19.5. Хронометраж алгоритмов сортировки STL
- 271 ЧАСТЬ III. СПРАВОЧНОЕ РУКОВОДСТВО ПО STL
- 273 Глава 20. Справочное руководство по итераторам
- 274 20.1. Требования ко входным итераторам
- 275 20.2. Требования к выходным итераторам
- 276 20.3. Требования к однонаправленным итераторам
- 277 20.4. Требования к двунаправленным итераторам
- 277 20.5. Требования к итераторам с произвольным доступом
- 278 20.6. Свойства итераторов
- 279 20.6.1. Базовый класс iterator
- 279 20.6.2. Стандартные дескрипторы итераторов
- 280 20.7. Операции с итераторами
- 280 20.8. istream_iterator
- 281 20.8.1. Файлы
- 281 20.8.2. Объявление класса
- 281 20.8.3. Примеры
- 281 20.8.4. Описание
- 281 20.8.5. Определения типов
- 281 20.8.6. Конструкторы
- 282 20.8.7. Открытые функции-члены
- 282 20.8.8. Операции сравнения
- 282 20.9. ostream_iterator
- 282 20.9.1. Файлы
- 283 20.9.2. Объявление класса
- 283 20.9.3. Примеры
- 283 20.9.4. Описание
- 283 20.9.5. Определения типов
- 283 20.9.6. Конструкторы
- 284 20.9.7. Открытые функции-члены
- 284 20.10. reverse_iterator
- 284 20.10.1. Файлы
- 284 20.10.2. Объявление класса
- 284 20.10.3. Примеры
- 284 20.10.4. Описание
- 285 20.10.5. Конструктор
- 285 20.10.6. Открытые функции-члены
- 286 20.10.7. Глобальные операции
- 286 20.10.8. Предикаты равенства и упорядочения
- 287 20.11. back_insert_iterator
- 287 20.11.1. Файлы
- 287 20.11.2. Объявление класса
- 287 20.11.3. Примеры
- 287 20.11.4. Описание
- 287 20.11.5. Конструкторы
- 287 20.11.6. Открытые функции-члены
- 288 20.11.7. Сопутствующие шаблоны функций
- 288 20.12. front_insert_iterator
- 288 20.12.1. Файлы
- 288 20.12.2. Объявление класса
- 288 20.12.3. Конструкторы
- 288 20.12.4. Открытые функции-члены
- 289 20.12.5. Сопутствующие шаблоны функций
- 289 20.13. insert_iterator
- 289 20.13.1. Файлы
- 289 20.13.2. Объявление класса
- 289 20.13.3. Примеры
- 289 20.13.4. Конструкторы
- 289 20.13.5. Открытые функции-члены
- 290 20.13.6. Сопутствующие шаблоны функций
- 291 Глава 21. Справочное руководство по контейнерам
- 291 21.1. Требования
- 291 21.1.1. Дизайн и организация контейнеров STL
- 292 21.1.2. Общие члены всех контейнеров
- 294 21.1.3. Требования к обратимым контейнерам
- 294 21.1.4. Требования к контейнерам последовательностей
- 295 21.1.5. Требования к отсортированным ассоциативным контейнерам
- 298 21.2. Описания организации классов контейнеров
- 298 21.2.1. Файлы
- 299 21.2.2. Объявление класса
- 299 21.2.3. Примеры
- 299 21.2.4. Описание
- 299 21.2.5. Определения типов
- 299 21.2.6. Конструкторы, деструкторы и связанные функции
- 299 21.2.7. Операции сравнения
- 299 21.2.8. Функции-члены для обращения к элементам
- 299 21.2.9. Функции-члены для вставки
- 299 21.2.10. Функции-члены для удаления
- 299 21.2.11. Раздел(ы) дополнительных примечаний
- 300 21.3. vector
- 300 21.3.1. Файлы
- 300 21.3.2. Объявление класса
- 300 21.3.3. Примеры
- 300 21.3.4. Описание
- 301 21.3.5. Определения типов
- 301 21.3.6. Конструкторы, деструкторы и связанные функции вектора
- 303 21.3.7. Операции сравнения
- 303 21.3.8. Функции-члены вектора для обращения к элементам
- 304 21.3.9. Функции-члены вектора для вставки
- 304 21.3.10. Функции-члены вектора для удаления
- 305 21.3.11. Замечания о функциях-членах вставки и удаления
- 305 21.4. deque
- 305 21.4.1. Файлы
- 305 21.4.2. Объявление класса
- 306 21.4.3. Примеры
- 306 21.4.4. Описание
- 306 21.4.5. Определения типов
- 306 21.4.6. Конструкторы, деструкторы и связанные функции дека
- 307 21.4.7. Операции сравнения
- 307 21.4.8. Функции-члены дека для обращения к элементам
- 308 21.4.9. Функции-члены дека для вставки
- 308 21.4.10. Функции-члены дека для удаления
- 309 21.4.11. Сложность вставки в дек
- 309 21.4.12. Замечания о функциях-членах удаления
- 309 21.5. list
- 309 21.5.1. Файлы
- 309 21.5.2. Объявление класса
- 309 21.5.3. Примеры
- 310 21.5.4. Описание
- 310 21.5.5. Определения типов
- 311 21.5.6. Конструкторы, деструкторы и связанные функции списка
- 311 21.5.7. Операции сравнения
- 312 21.5.8. Функции-члены списка для обращения к элементам
- 313 21.5.9. Функции-члены списка для вставки
- 313 21.5.10. Функции-члены списка для удаления
- 313 21.5.11. Специальные операции со списками
- 315 21.5.12. Замечания о функциях-членах вставки
- 315 21.5.13. Замечания о функциях-членах удаления
- 315 21.6. set
- 315 21.6.1. Файлы
- 316 21.6.2. Объявление класса
- 316 21.6.3. Примеры
- 316 21.6.4. Описание
- 316 21.6.5. Определения типов
- 317 21.6.6. Конструкторы, деструкторы и связанные функции множества
- 317 21.6.7. Операции сравнения
- 318 21.6.8. Функции-члены множества для обращения к элементам
- 319 21.6.9. Функции-члены множества для вставки
- 319 21.6.10. Функции-члены множества для удаления
- 320 21.6.11. Специализированные операции множества
- 320 21.7. multiset
- 320 21.7.1. Файлы
- 320 21.7.2. Объявление класса
- 320 21.7.3. Примеры
- 321 21.7.4. Описание
- 321 21.7.5. Определения типов
- 321 21.7.6. Конструкторы, деструкторы и связанные функции мультимножества
- 322 21.7.7. Операции сравнения
- 322 21.7.8. Функции-члены мультимножества для обращения к элементам
- 323 21.7.9. Функции-члены мультимножества для вставки
- 323 21.7.10. Функции-члены мультимножества для удаления
- 324 21.7.11. Специализированные операции мультимножества
- 324 21.8. map
- 324 21.8.1. Файлы
- 324 21.8.2. Объявление класса
- 325 21.8.3. Примеры
- 325 21.8.4. Описание
- 325 21.8.5. Определения типов
- 326 21.8.6. Конструкторы, деструкторы и связанные функции отображения
- 326 21.8.7. Операции сравнения
- 327 21.8.8. Функции-члены отображения для обращения к элементам
- 328 21.8.9. Функции-члены отображения для вставки
- 328 21.8.10. Функции-члены отображения для удаления
- 329 21.8.11. Специализированные операции отображения
- 330 21.9. multimap
- 330 21.9.1. Файлы
- 330 21.9.2. Объявление класса
- 330 21.9.3. Примеры
- 330 21.9.4. Описание
- 330 21.9.5. Определения типов
- 330 21.9.6. Конструкторы, деструкторы и связанные функции мультиотображения
- 331 21.9.7. Операции сравнения
- 331 21.9.8. Функции-члены мультиотображения для обращения к элементам
- 332 21.9.9. Функции-члены мультиотображения для вставки
- 333 21.9.10. Функции-члены мультиотображения для удаления
- 333 21.9.11. Специализированные операции мультиотображения
- 334 21.10. Адаптер контейнера stack
- 334 21.10.1. Файлы
- 334 21.10.2. Объявление класса
- 334 21.10.3. Примеры
- 334 21.10.4. Описание
- 335 21.10.5. Определения типов
- 335 21.10.6. Конструкторы
- 335 21.10.7. Открытые функции-члены
- 335 21.10.8. Операции сравнения
- 336 21.11. Адаптер контейнера queue
- 336 21.11.1. Файлы
- 336 21.11.2. Объявление класса
- 336 21.11.3. Примеры
- 336 21.11.4. Описание
- 336 21.11.5. Определения типов
- 336 21.11.6. Конструкторы
- 337 21.11.7. Открытые функции-члены
- 337 21.11.8. Операции сравнения
- 337 21.12. Адаптер контейнера priority_queue
- 337 21.12.1. Файлы
- 337 21.12.2. Объявление класса
- 337 21.12.3. Примеры
- 338 21.12.4. Описание
- 338 21.12.5. Определения типов
- 338 21.12.6. Конструкторы
- 339 21.12.7. Открытые функции-члены
- 339 21.12.8. Операторы сравнения
- 291 21.1. Требования
- 341 Глава 22. Справочное руководство по обобщенным алгоритмам
- 341 22.1. Организация описаний алгоритмов
- 341 22.1.1. Прототипы
- 342 22.1.2. Примеры
- 342 22.1.3. Описание
- 342 22.1.4. Временная сложность
- 342 22.2. Неизменяющие алгоритмы над последовательностями
- 343 22.3. for_each
- 343 22.3.1. Прототип
- 343 22.3.2. Примеры
- 343 22.3.3. Описание
- 344 22.3.4. Временная сложность
- 344 22.4. find
- 344 22.4.1. Прототипы
- 344 22.4.2. Примеры
- 344 22.4.3. Описание
- 344 22.4.4. Временная сложность
- 344 22.5. find_first_of
- 344 22.5.1. Прототипы
- 345 22.5.2. Описание
- 345 22.5.3. Временная сложность
- 345 22.6. adjacent_find
- 345 22.6.1. Прототипы
- 345 22.6.2. Примеры
- 345 22.6.3. Описание
- 345 22.6.4. Временная сложность
- 346 22.7. count
- 346 22.7.1. Прототипы
- 346 22.7.2. Примеры
- 346 22.7.3. Описание
- 346 22.7.4. Временная сложность
- 346 22.8. mismatch
- 346 22.8.1. Прототипы
- 346 22.8.2. Примеры
- 347 22.8.3. Описание
- 347 22.8.4. Временная сложность
- 347 22.9. equal
- 347 22.9.1. Прототипы
- 347 22.9.2. Примеры
- 347 22.9.3. Описание
- 348 22.9.4. Временная сложность
- 348 22.10. search
- 348 22.10.1. Прототипы
- 348 22.10.2. Примеры
- 348 22.10.3. Описание
- 348 22.10.4. Временная сложность
- 349 22.11. search_n
- 349 22.11.1. Прототипы
- 349 22.11.2. Описание
- 349 22.11.3. Временная сложность
- 349 22.12. find_end
- 349 22.12.1. Прототипы
- 350 22.12.2. Описание
- 350 22.12.3. Временная сложность
- 350 22.13. Обзор изменяющих алгоритмов над последовательностями
- 351 22.14. copy
- 351 22.14.1. Прототипы
- 351 22.14.2. Примеры
- 351 22.14.3. Описание
- 351 22.14.4. Временная сложность
- 351 22.15. swap
- 351 22.15.1. Прототипы
- 352 22.15.2. Примеры
- 352 22.15.3. Описание
- 352 22.15.4. Временная сложность
- 352 22.16. transform
- 352 22.16.1. Прототипы
- 352 22.16.2. Примеры
- 353 22.16.3. Описание
- 353 22.16.4. Временная сложность
- 353 22.17. replace
- 353 22.17.1. Прототипы
- 353 22.17.2. Примеры
- 354 22.17.3. Описание
- 354 22.17.4. Временная сложность
- 354 22.18. fill
- 354 22.18.1. Прототипы
- 354 22.18.2. Примеры
- 354 22.18.3. Описание
- 354 22.18.4. Временная сложность
- 354 22.19. generate
- 354 22.19.1. Прототипы
- 355 22.19.2. Примеры
- 355 22.19.3. Описание
- 355 22.19.4. Временная сложность
- 355 22.20. remove
- 355 22.20.1. Прототипы
- 355 22.20.2. Примеры
- 356 22.20.3. Описание
- 356 22.20.4. Временная сложность
- 356 22.21. unique
- 356 22.21.1. Прототипы
- 356 22.21.2. Примеры
- 357 22.21.3. Описание
- 357 22.21.4. Временная сложность
- 357 22.22. reverse
- 357 22.22.1. Прототипы
- 357 22.22.2. Примеры
- 357 22.22.3. Описание
- 358 22.22.4. Временная сложность
- 358 22.23. rotate
- 358 22.23.1. Прототипы
- 358 22.23.2. Примеры
- 358 22.23.3. Описание
- 358 22.23.4. Временная сложность
- 358 22.24. random_shuffle
- 358 22.24.1. Прототипы
- 359 22.24.2. Примеры
- 359 22.24.3. Описание
- 359 22.24.4. Временная сложность
- 359 22.25. partition
- 359 22.25.1. Прототипы
- 359 22.25.2. Примеры
- 359 22.25.3. Описание
- 360 22.25.4. Временная сложность
- 360 22.26. Обзор алгоритмов, связанных с сортировкой
- 361 22.27. sort
- 361 22.27.1. Прототипы
- 362 22.27.2. Примеры
- 362 22.27.3. Описание
- 363 22.27.4. Временная сложность
- 363 22.28. nth_element
- 363 22.28.1. Прототипы
- 363 22.28.2. Примеры
- 363 22.28.3. Описание
- 364 22.28.4. Временная сложность
- 364 22.29. Бинарный поиск
- 364 22.29.1. Прототипы
- 365 22.29.2. Примеры
- 365 22.29.3. Описание
- 365 22.29.4. Временная сложность
- 365 22.30. merge
- 365 22.30.1. Прототипы
- 366 22.30.2. Примеры
- 366 22.30.3. Описание
- 366 22.30.4. Временная сложность
- 366 22.31. Теоретико-множественные операции над отсортированными структурами
- 367 22.31.1. Прототипы
- 368 22.31.2. Примеры
- 368 22.31.3. Описание
- 368 22.31.4. Временная сложность
- 369 22.32. Операции с пирамидами
- 369 22.32.1. Прототипы
- 370 22.32.2. Примеры
- 370 22.32.3. Описание
- 370 22.32.4. Временная сложность
- 370 22.33. min и max
- 370 22.33.1. Прототипы
- 371 22.33.2. Примеры
- 371 22.33.3. Описание
- 371 22.33.4. Временная сложность
- 371 22.34. Лексикографическое сравнение
- 371 22.34.1. Прототипы
- 371 22.34.2. Примеры
- 372 22.34.3. Описание
- 372 22.34.4. Временная сложность
- 372 22.35. Генераторы перестановок
- 372 22.35.1. Прототипы
- 372 22.35.2. Примеры
- 373 22.35.3. Описание
- 373 22.35.4. Временная сложность
- 373 22.36. Обзор обобщенных численных алгоритмов
- 373 22.37. accumulate
- 373 22.37.1. Прототипы
- 374 22.37.2. Примеры
- 374 22.37.3. Описание
- 374 22.37.4. Временная сложность
- 374 22.38. inner_product
- 374 22.38.1. Прототипы
- 374 22.38.2. Примеры
- 374 22.38.3. Описание
- 375 22.38.4. Временная сложность
- 375 22.39. partial_sum
- 375 22.39.1. Прототипы
- 375 22.39.2. Примеры
- 375 22.39.3. Описание
- 376 22.39.4. Временная сложность
- 376 22.40. adjacent_difference
- 376 22.40.1. Прототипы
- 376 22.40.2. Примеры
- 376 22.40.3. Описание
- 376 22.40.4. Временная сложность
- 341 22.1. Организация описаний алгоритмов
- 377 Глава 23. Справочное руководство по функциональным объектам и адаптерам
- 377 23.1. Требования
- 377 23.1.1. Функциональные объекты
- 377 23.1.2. Функциональные адаптеры
- 378 23.2. Базовые классы
- 378 23.3. Арифметические операции
- 379 23.4. Операции сравнения
- 379 23.5. Логические операции
- 380 23.6. Инверторы
- 380 23.7. Связыватели
- 381 23.8. Адаптеры для указателей на функции
- 381 23.9. Адаптеры для указателей на функции-члены
- 377 23.1. Требования
- 385 Глава 24. Справочное руководство по аллокаторам
- 385 24.1. Введение
- 385 24.1.1. Передача аллокаторов контейнерам STL
- 385 24.2. Требования к аллокаторам
- 388 24.3. Аллокатор по умолчанию
- 388 24.3.1. Файлы
- 388 24.3.2. Объявление класса
- 388 24.3.3. Описание
- 388 24.3.4. Определения типов
- 388 24.3.5. Конструкторы, деструкторы и связанные функции
- 389 24.3.6. Другие функции-члены
- 389 24.3.7. Операции сравнения
- 390 24.3.8. Специализация для void
- 390 24.4. Пользовательские аллокаторы
- 385 24.1. Введение
- 395 Глава 25. Справочное руководство по утилитам
- 395 25.1. Введение
- 395 25.2. Функции сравнения
- 396 25.3. pair
- 396 25.3.1. Файлы
- 396 25.3.2. Объявление класса
- 396 25.3.3. Примеры
- 396 25.3.4. Описание
- 396 25.3.5. Определения типов
- 396 25.3.6. Члены-данные
- 396 25.3.7. Конструкторы
- 397 25.3.8. Функции сравнения
- 399 Приложение А. Заголовочные файлы STL
- 401 Приложение Б. Справочное руководство по строкам
- 401 Б.1. Классы строк
- 401 Б.1.1. Файлы
- 401 Б.1.2. Объявление класса
- 401 B.1.3. Описание
- 402 Б.1.4. Определения типов
- 403 Б.1.5. Конструкторы, деструкторы и связанные функции
- 405 Б.1.6. Операции сравнения
- 407 Б.1.7. Функции-члены для доступа к элементам
- 408 Б.1.8. Функции-члены для вставки
- 408 Б.1.9. Функции-члены для удаления
- 409 Б.1.10. Дополнительные примечания
- 409 Б.2. Свойства символов
- 409 Б.2.1. Файлы
- 409 Б.2.2. Описание
- 409 Б.2.3. Определения типов
- 410 Б.2.4. Функции для работы с символами
- 401 Б.1. Классы строк
- 413 Приложение В. Заголовочные файлы, используемые в примерах программ
- 413 В.1. Файлы, используемые в примере 17.1
- 419 Приложение Г. Ресурсы
- 419 Г.1. Адрес реализации SGI STL
- 419 Г.2. Адрес для получения исходных текстов данной книги
- 419 Г.3. Использованные компиляторы
- 420 Список литературы
- 422 Предметный указатель
Инструкция как скачать книгу Дэвид Р. Мюссер, Жилмер Дж. Дердж, Атул Сейни: C++ и STL. Справочное руководство в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.