Конструкторы, деструктор

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

Вектор(vector) – это самый простой последовательный контейнер, реализованный в памяти в виде динамического массива, элементы которого хранятся в определённом порядке и занимают непрерывную область памяти с возможностью расширения с конца. В силу такой организации(рис.25.1) vector обеспечивает произвольный доступ к своим элементам.

При работе с контейнерами вместо указателей используются итераторы, выполняющие те же функции, но организованные в виде встроенных классов, что позволяет обеспечить корректную работу со всеми контейнерами. Для итераторов перегружены основные операции, имитирующие их поведение как обычных указателей. Одной из особенностей итераторов является соглашение, по которому, при указании интервала, итератор конца показывает не на последний элемент, а на элемент, лежащий после последнего, даже если физически таковой отсутствует. Такой интервал называется полуоткрытым и обозначается: [begin,end).

Рис. 25.1. Структура контейнера vector

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

Операции вставки и удаления элементов в конце вектора происходят с высоким быстродействием, однако при их выполнении внутри вектора быстродействие существенно снижается, поскольку все элементы в последующих позициях приходится перемещать на новое место.

Для использования данного контейнера необходимо подключить заголовок <vector>.

Операции с векторами рассмотрим по группам, составив соответствующие таблицы: конструкторы и дестуктор, немодифицирующие операции, операции сравнения, операции присваивания, доступ к элементам вектора, итераторы вектора, вставка и удаление элементов.

Таблица 25.1

Конструкторы, деструктор

Операция Назначение
vector<T> v Создаёт пустой вектор v для элементов типа Т
vector<T> v(n) Создаёт вектор v из n элементов, равных Т()
vector<T> v2(v1) Создаёт копию вектора v1
vector<T> v2=v1 Создаёт копию вектора v1
vector<T> v2(n,elem) Создаёт вектор v из n копий elem типа Т
vector<T> v2(begin,end) Создает вектор из элементов интервала [begin, end) любого контейнера, в том числе и из элементов простого массива
vector<T> v(initlist) Создает вектор, инициа-лизированный элементами списка инициализации initlist (стандарт С++ 11)
vector<T> v=initlist Создает вектор, инициа-лизированный элементами списка инициализации initlist (стандарт С++ 11)
v.~vector() Уничтожает все элементы и освобождает память

Здесь Т – тип данных элементов вектора.

 

Таблица 25.2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: