Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Структура библиотеки

Читайте также:
  1. II. Структура портфолио учителя.
  2. III. Структура портфолио
  3. IV. Структура портфолио ученика.
  4. IV.Структура, порядок изложения и оформления работы
  5. IV.Структура, порядок изложения и оформления работы
  6. v Структура смертности населения по причинам.
  7. Автоматизированные банковские системы, их эволюция и структура

В библиотеке выделяют пять основных компонентов:

Контейнер (англ. container) — хранение набора объектов в памяти.

Итератор (англ. iterator) — обеспечение средств доступа к содержимому контейнера.

Алгоритм (англ. algorithm) — определение вычислительной процедуры.

Адаптер (англ. adaptor) — адаптация компонентов для обеспечения различного интерфейса.

Функциональный объект (англ. functor) — сокрытие функции в объекте для использования другими компонентами.

+Строки Шаблон string реализует функционал, необходимый для работы со строками текста.

В отличии от стандартного представления строки в виде массива символов константной длинны шаблон string динамически распределяет память для строки в пуле и гарантирует достаточный объём памяти при любых операциях со строками: вводе, слиянии строк и т.д.

Шаблон обеспечивает освобождение памяти, занятого строковым объектом, после того, как он станет не нужен. Методы шаблона обеспечивают все необходимые алгоритмы работы со строками: поиск, замену, вставку, сравнение. Использование шаблона string значительно упрощает работу со строками для начинающего программиста.

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

Заголовочные файлы

Стандартная библиотека C++ вводит новый стиль спецификации заголовочных файлов. Расширение.h опускается. Например, для подключения библиотеки алгоритмов нужно написать

#include <algorithm>

Компилятор автоматически укорачивает имя до восьми символов, добавляет.h и читает файл algorith.h из каталога $(BCB)\Include. На уровне исходного кода программы C++ получаются более мобильными, не привязанными к конкретной системе именования файлов.

Контейнеры

Контейнеры библиотеки STL можно разделить на четыре категории: последовательные, ассоциативные, контейнеры-адаптеры и псевдоконтейнеры.


 

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

Метод Описание Примечание
Конструктор копии Создаёт новый элемент, идентичный старому Используется при каждой вставке элемента в контейнер
Оператор присваивания Заменяет содержимое элемента копией исходного элемента Используется при каждой модификации элемента
Деструктор Разрушает элемент Используется при каждом удалении элемента
Конструктор по умолчанию Создаёт элемент без аргументов Применяется только для определённых операций
operator== Сравнивает два элемента Используется при выполнении operator== для двух контейнеров
operator< Определяет, меньше ли один элемент другого Используется при выполнении operator< для двух контейнеров

Все «полноценные» стандартные контейнеры удовлетворяют определённому набору требований (или соглашений). В приведённой ниже таблице полагается, что С — класс контейнера, содержащий объекты типа Т.

Выражение Возвращаемый тип Сложность Примечание
C::value_type T Время компиляции  
C::reference T Время компиляции  
C::const_reference   Время компиляции  
C::pointer Тип указателя, указывающего на C::reference Время компиляции Указатель на Т
C::iterator Тип итератора, указывающего на C::reference Время компиляции Итератор любого типа, кроме итератора вывода
C::const_iterator Тип итератора, указывающего на C::const_reference Время компиляции Итератор любого типа, кроме итератора вывода
C::size_type Беззнаковый целочисленный тип Время компиляции  
C obj;   Постоянная После: obj.size() == 0
C obj1; obj1 = obj2;   Линейная После: obj1 == obj2
C obj; (&obj)->~C(); Результат не используется Линейная После: a.size() == 0.
obj.begin()   Постоянная  
obj.end()   Постоянная  
obj1 == obj2 Обратимый в bool Линейная  
obj1!= obj2 Обратимый в bool Линейная  
obj.size() size_type Зависит от типа Не рекомендуется применять для проверки, пуст ли контейнер
obj.empty() Обратимый в bool Постоянная  
obj1 < obj2 Обратимый в bool Линейная  
obj1 > obj2 Обратимый в bool Линейная  
obj1 <= obj2 Обратимый в bool Линейная  
obj1 >= obj2 Обратимый в bool Линейная  
obj.swap(obj2) Void Постоянная  

(Выше предоставлена сложная инфа с Википедии. Далее попроще)

Учебник С. Прата С++ для начинающих (475 стр)советую там почитать там очень подробно все расписано.

Есть некоторые основные принципы работы контейнеров, о которых всегда следует помнить. Среди них можно сформулировать следующие:

- За запись объекта в контейнер отвечает конструктор копии объекта. При копировании одного контейнера в другой может быть важна перегруженная операция присваивания.

- Контейнеры сами автоматически выделяют и освобождают память по мере надобности.

- Когда программа уничтожает контейнер, она первым делом вызывает деструкторы для всех содержащихся в нем объектов. (Это не касается случая, когда в контейнере хранятся не объекты, а указатели на них.)

http://msdn.microsoft.com/ru-ru/library/1fe2x6kt.aspx (там есть ссылки на доп. Материалы по данному вопросу)

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


Дата добавления: 2015-09-03; просмотров: 92 | Нарушение авторских прав


Читайте в этой же книге: Строковые потоки | Состояние формата (ОТНОСИТСЯ К ПОСЛЕДНЕМУ ВОПРОСУ, КОТОРЫЙ 24) | Работа с несовместимыми конструкциями. | Стандартный класс string. Зарезервированные слова и опции меню. | Стандартный класс string. Операции ввода-вывода строк. | Описание таблицы акселераторов | Специализация шаблонов класса | Схемы отображения шрифтов | Заметки | Недостатки шаблонов |
<== предыдущая страница | следующая страница ==>
Стандартная библиотека шаблонов (STL). Назначение и состав библиотеки. Контейнеры. Последовательные контейнеры. Векторы.| Последовательные контейнеры поддерживают указанный пользователем порядок вставляемых элементов.

mybiblioteka.su - 2015-2024 год. (0.012 сек.)