logo
шпоры по ООП

73.Библиотека контейнерного класса структур данных.

Контейнеры - это объекты, реализующие общие структуры данных, предлагающие функции-элементы для доступа к каждому элементу данных и добавления таких элементов. При этом внутренние детали скрыты от пользователей. Контейнеры могут содержать целые и вещественные числа, строки, структуры, классы, типы, определенные пользователями, и любые объекты C++.

Контейнеры Borland реализуются с помощью шаблонов. Вы можете передавать в шаблон любой тип объекта, который хотите включить в контейнер. Это облегчает, например, инициализацию массивов.

Библиотеку класса контейнера можно разделить на две категории: фундаментальные структуры данных FDS (Fundamental Data Structures) и абстрактные типы данных ADT (Abstract Data Types)

Контейнеры и файлы заголовков Borland

Структуры FDS - это контейнеры нижнего уровня, реализующие структуры памяти. Каждая FDS имеет фундаментальные функции добавления и отсоединения. Типы ADT обычно используются в конструкциях обработки данных. Каждый тип ADT имеет соответствующие методы, например, контейнеры стека - функции-элементы Push и Pop.

Каждый тип ADT основан на FDS. Например, TArrayAsVector реализует массив, используя в качестве соответствующей структуры FDS вектор. Контейнеры ADT используют характеристики хранения соответствующих FDS и добавляет специфические методы доступа, которые делают каждый из них уникальным.

Контейнеры могут хранить копии объектов (прямые контейнеры) или указатели на объекты (косвенные контейнеры). Например, следующий контейнер является косвенным массивом, в котором хранятся указатели на значения float:

TIArraysAsVector<float> FloatPtrArray(10);

где I - имя шаблона, указывающее соответствующий контейнер.

В некоторых типах контейнеров содержимое записывается в отсортированном виде. Отсортированные контейнеры (как косвенные, так и прямые) должны иметь соответствующую операцию <, что позволяет определить порядок элементов. Эти операции предусмотрены для предопределенных типов. Для типов, определенных пользователем, вы должны обеспечить такую операцию. Для прямых объектов тип должен иметь допустимую операцию == - используемый по умолчанию конструктор. Для косвенных контейнеров сортируются объекты, а не указатели, которые содержит контейнер.