Архив категории ‘Библиотека шаблонов классов Borland’

Развитие «сознания» класса. Как использовать принадлежность объектов

    На этом шаге мы рассмотрим использование принадлежности об'ектов.     После задания статуса владения объектами для косвенного контейнера можно вызвать функции-члены для удаления одного или нескольких объектов из контейнера и, возможно, удаления при этом самих объектов. В листинге 1 демонстрируются несколько основных приемов.     Листинг 1. OWNER.CPP (демонстрация принадлежности объектов) #include <iostream.h> #include <cstring.h> #include […]

Развитие «сознания» класса. Как задать принадлежность объектов.

    На этом шаге мы рассмотрим способ задания принадлежности объектов.     Можно задать принадлежность объектов, создав косвенный контейнер, подобный TIArrayAsVector, и вызвав функцию, наследованную из класса TShouldDelete. Например, рассмотрим следующий косвенный контейнер, запоминающий указатели на строковые объекты: TIАгrayAsVector<string> stuff(100);     Для того чтобы определить, владеет ли stuff своими объектами (по умолчанию владеет), следует вызвать функцию […]

Развитие «сознания» класса. Принадлежность объектов.

    На этом шаге мы рассмотрим принадлежность объектов.     Запомнить объект в контейнере совсем не так легко. Вам необходимо знать, имеете ли вы дело с динамическими объектами, созданными с помощью оператора new, или же с объектами, которые существуют временно в стеке, а может быть с глобальными, размещающимися в сегменте данных. Вам также должно быть известно, […]

Развитие «сознания» класса. Итераторы.

    На этом шаге мы рассмотрим альтернативный метод доступа к объектам контейнера.     Итераторы предоставляют альтернативный метод доступа к объектам контейнера. Итераторами снабжаются абстрактные контейнеры вроде массивов и очередей, а также такие фундаментальные структуры, как списки и векторы.    С помощью итератора вы можете "передвигаться" по объектам в структуре без их удаления. Например, обычно только верхний […]

Косвенное и непосредственное запоминание объектов в контейнерах.

    На этом шаге мы рассмотрим способы запоминания объектов в контейнерах.     Теперь, когда вы разобрались с соглашениями именования классов и общей схемой библиотеки, можно приступить к собственно запоминанию данных в контейнерах. Независимо от типа контейнера, важно решить, запоминать ли объекты косвенно (по указателю) или непосредственно (копированием). Контейнеры, у которых в имени содержится буква I, […]

Соглашения именования шаблонов.

    На этом шаге мы рассмотрим соглашения именования шаблонов.     Бессчетное количество имен классов в библиотеке поначалу может показаться ошеломляющим, и поскольку одни классы выводятся из других, то часто приходится читать информацию о нескольких классах для того, чтобы разобраться, что делает дин из них. Например, в классе TStackAsVector определен только конструктор. В предке класса TMStackAsVector […]

Как создать контейнер.

    На этом шаге мы научимся создавать контейнер.     Покажем на простом примере, как создаются контейнерные классы. Сначала следует включить один или несколько заголовочных файлов, содержащихся в подкаталоге INCLUDE\CLASSLIB каталога BC45. Например, для того чтобы воспользоваться стековым контейнером, следует включить заголовочный файл STACKS.H: #include <classlib\stacks.h>     Затем создайте контейнерный объект одного из классов, содержащихся в […]

АТД и ФСД.

    На этом шаге мы рассмотрим абстрактные типы данных и фундаментальные структуры данных.    Контейнерный класс - это абстрактный тип данных (АТД). Он обеспечивает абстракцию методов хранения данных, например стек - АТД с такими функциями, как Push() и Рор(), для запоминания и восстановления данных методом стека. Внутренняя реализация этих функций не зависит от концепции стека. Вы […]

Введение в шаблоны контейнерных классов.

    На этом шаге мы введём понятие контейнерных классов .     В библиотеку шаблонов классов Borland входят контейнерные классы, которые можно включать в программы для управления коллекциями данных любых видов. Подобно обычным массивам и спискам, контейнерные классы - это хранилища данных, предназначенные для широкого использования. Кроме того, контейнерные классы объектно-ориентированы, и вы можете расширять их […]