Система Orphus

STL для программистов на C++

Автор: Леен Аммерааль
Издательство: "ДМК", 1999
240 страниц

Материал предоставили: Ростислав Глухов
Валерий Лаптев
Найти в магазинах

Аннотация

Содержание
Комментарии

Аннотация

Стандартная библиотека шаблонов (STL) содержит множество полезных инструментов общего назначения. В этой книге наряду со справочным материалом последовательно изложено введение в предмет, которое позволит быстро освоить основы применения STL в программировании. Небольшие законченные программы служат иллюстрацией основных понятий STL, таких, как контейнеры, алгоритмы и функциональные объекты.

Все алгоритмы STL сначала представляются формально в виде прототипа, а затем следует неформальное объяснение, как применять их на практике. Все понятия иллюстрируются большим количеством примеров программ, доступных в электронном виде через Интернет. И, наконец, приводятся специальные примеры для облегчения понимания нетривиальных понятий, таких, как функциональные объекты и адаптеры функций, включая предикаты, привязки и отрицатели.

Книга предназначена как для профессиональных программистов и тех, кто углубленно изучает С++, так и для тех, кто только начинает осваивать этот язык программирования.

Содержание

Предисловие

STL для начинающих

1. Шаблоны, пространства имен и тип bool
2. Знакомство с STL
3. Векторы, списки и двусторонние очереди
4. Сортировка
5. Алгоритм find
6. Алгоритм copy и итератор вставки
7. Алгоритм Merge
8. Типы, определяемые пользователем
9. Категории итераторов
10. Алгоритмы replace и reverse
11. Возвращаясь к алгоритму sort
12. Введение в функциональные объекты
13. Использование find_if, remove и remove_if
14. Класс auto_ptr

Другие алгоритмы и контейнеры

1. Алгоритм accumulate
2. Алгоритм for_each
3. Подсчет
4. Функциональные объекты, определенные в STL
5. Введение в ассоциативные контейнеры
6. Множества и множества с дубликатами
7. Словари и словари с дубликатами
8. Пары и сравнения
9. Снова словари
10. Функции insert
11. Удаление элементов словаря
12. Более удобные строки

Последовательные контейнеры

1. Векторы и связанные с ними типы
2. Функции capacity и reserve
3. Обзор функций-членов класса vector
4. Двусторонние очереди
5. Списки
6. Векторы векторов
7. Как избавиться от явного выделения памяти

Ассоциативные контейнеры

1. Введение
2. Функции-члены множеств
3. Объединение и пересечение множеств
4. Отличия множеств с дубликатами от просто множеств
5. Словари
6. Словари с дубликатами
7. Сводный указатель

Адаптеры контейнеров

1. Стеки
2. Очереди
3. Очереди с приоритетами

Функциональные объекты и адаптеры

1. Функциональные объекты
2. Унарные предикаты и привязки
3. Отрицатели
4. Два полезных базовых класса STL
5. Функциональные объекты и алгоритм transform
6. Адаптеры итераторов

Обобщенные алгоритмы

1. Немодифицирующие последовательные алгоритмы
1.1. Алгоритмы find, count, for_each, find_first_of и find_end
1.2. Алгоритм adjacent_find
1.3. Отличие
1.4. Сравление на равенство
1.5. Поиск последовательности
2. Модифицирующие последовательные алгоритмы
2.1. Преобразовать
2.2. Копировать
2.3. Переместить по кругу
2.4. Обменять
2.5. Заменить
2.6. Удалить
2.7. Заполнить
2.8. Породить
2.9. Убрать повторы
2.10. Расположить в обратном порядке
2.11. Перетасовать
2.12. Разделить
3. Алгоритмы, связанные с сортировкой
3.1. "Меньше" и другие операции сравнения
3.2. Сортировка
3.3. Стабильная сортировка
3.4. Частичная сортировка
3.5. N-й элемент
3.6. Двоичный поиск
3.7. Объединение
3.8. Оперыции над множествами для сортированных контейнеров
3.9. Операции над пирамидами.
3.10. Минимум и максимум
3.11. Лексикографическое сравнение
3.12. Генераторы перестановок
4. Обобщенные численные алгоритмы
4.1. Накопление
4.2. Скалярное произвдение
4.3. Частичная сумма
4.4. Разность между смежными элементами
5 Прикладная программа: метод наименьших квадратов

Прикладная программа: очень большие числа

1. Введение
2. Реализация класса large
3. Вычисление числа Pi

Приложения

Библиография
Указатель идентификаторов и английских названий
Предметный указатель

Комментарии

Ростислав Глухов

Почти полное описание библиотеки STL с хорошо подобранными примерами. Не хватает только аллокаторов и потоков (stream'ов). Эту книгу можно использовать как для первичного ознакомления с STL, так и в качестве справочника, я так, собственно и делаю :). Тираж жаль всего 3000, может уже стала раритетом.

Валерий Лаптев

Мнение Ростислава Глухова, в общем-то, подтвердилось - книжка действительно стала раритетом. До издания книги Джосаттиса просто не было другой книги, в которой были бы именно фактические данные по библиотеке. На английском языке книга вышла еще в 1997 году - до принятия стандарта 1998 года. Тогда под STL понималась библиотека шаблонов, предложенная Степановым. Поэтому в книге, естественно, нет ничего о библиотеке ввода-вывода. Описываются контейнеры, итераторы, алгоритмы и функциональные объекты.

Книга четко делится на 2 части. Первая часть - это две главы, в которых дается неформальное описание того, для чего нужны те или иные компоненты STL, и как их использовать. Вторая часть построена более формально, особенно глава по алгоритмам - дается интерфейс, краткое описание и пример (хотя примеров очень много и они все понятные). Я часто использую примеры из этой книги в лекциях для студентов.

Особую ценность книги составляет глава 8 - практическое применение STL для более серьезных задач. Автор написал класс для работы с длинными числами неограниченной длины, а потом использовал этот класс при написании программы для вычисления 1000 знаков числа Pi.

Поскольку книжка достаточно старая, там упоминаются еще VC5 и ВС5. Написано и читается легко, перевод неплохой, явных ляпов я не заметил. Более того, наверное, именно перевод этой книги способствовал появлению таких терминов как "привязки" (в книге Б. Страуструпа используется термин "связыватели") и "отрицатели", которые стали фактически стандартными. Но я все же предпочитаю книгу Джосаттиса - она просто новая и значительно больше по объему, не уступая (и во многом превосходя) по качеству изложения.