Сообщений 14 Оценка 30 Оценить |
В книге рассматриваются основы организации структур данных и их реализации с использованием C++ в качестве языка инструкций. Большинство рассматриваемых структур данных, таких как массивы, векторы, очереди, списки и стеки, имеются в составе стандартной библиотеки шаблонов (STL). Достаточно подробно исследуется каноническая реализация этих структур данных, которая является как эффективной, так и краткой. Большое внимание уделяется также алгоритмам для работы со структурами данных.
Книга следует принципу изучения на практических примерах. Программные проекты в конце каждой главы позволяют читателю разрабатывать и реализовывать свои собственные структуры данных, либо расширять или применять структуры данных, рассматриваемые в главе. При выполнении лабораторных работ, предусмотренных в каждой главе, читатель сможет получить практические навыки применения полученных знаний при реальном программировании.
Книга может быть использована в качестве учебного пособия при изучении компьютерных технологий в программах высших учебных заведений.
В этом обзоре появление этой книги объясняется тем, что "отличительной особенностью данной книги является то, что она в свой основе ориентирована на стандартную библиотеку шаблонов - в частности, на реализацию, предоставленную Hewlett-Packard". Книга представляет собой почти классический учебник по алгоритмам и структурам данных, причем неплохо написанный. Первые четыре главы - это введение, на основе которого излагается весь остальной материал. Особенно важны первые две. Первая содержит описание основных конструкций классов, а во второй излагаются важные свойства С++, без которых невозможно реализовать контейнеры: указатели и ссылки, массивы и динамическая память. Дается определение контейнера и итератора, объясняются принципы организации связанных структур типа списка, делается введение в обобщенные алгоритмы. Глава 3 не заслуживала бы упоминания, если бы в ней не было очень неплохого объяснения "большого О", применяемого для оценки производительности алгоритмов.
Ну, а с пятой главы фактически описывается организация контейнеров, итераторов и алгоритмов стандартной библиотеки, причем с некоторым углублением во "внутренности" реализации. В каждой главе обязательно есть довольно объемный пример применения. Например, в главе о векторах разрабатывается класс для работы с "длинными" числами, в главе о списках проектируется простой строчный редактор. Очереди и стеки применяются для моделирования мойки автомобилей и перевода в выражений в польскую запись соответственно. Ассоциативные контейнеры используются в задачах построения словаря синонимов и алфавитного указателя. Особенно мне понравился пример с применением приоритетной очереди: кодирование по Хаффмену. В тех главах, в которых излагаются структуры данных, не представленные в STL (например, глава 9 или глава 14), обязательно разрабатывается собственный класс.
Каждая глава, как и положено учебному пособию, содержит некоторое количество упражнений. Кроме того, автор утверждает, "в книге предусмотрено 29 лабораторных работ, описание которых содержится на web-сайте", и приводит адрес www.mhhe.com/collins (я еще проверить не успел - книжка только что вышла).
В общем, книга будет полезна, в первую очередь, начинающим программистам и студентам, которые хотят разобраться, как применять на практике конструкции STL, а также преподавателям. Я ее использую именно в качестве учебного пособия для своих студентов.
Сообщений 14 Оценка 30 Оценить |