STL контейнер Vector (вектор) – динамический массив c++

Кроме массивов в c++ существуют еще контейнеры, которые позволяют вам немного по другому хранить данные и, вдобавок, применять к ним различные функции (поиск, сортировка и т.д.). Сегодня вы узнаете об одном из контейнеров - векторе (vector)

Возможно вы уже сталкивались с такой проблемой, что массивы в с++ имеют ограниченный размер, а мы точно не знаем количество элементов, необходимое в массиве. В таких случаях необходимо использовать динамическое программирование. Т.е. выделять память под элементы массива при необходимости добавить какой-либо элемент. В принципе, в с++ это можно реализовать вручную, но зачем? если есть специальный класс - vector. Он позволяет создавать нам массивы переменной длинны в зависимости от ситуации.

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

#include 

Затем создание вектора почти ничем не отличается от создания переменной и/или массива:

vector  name; //здесть type- тип данных  в векторе,  а name - имя вектора

Для записи в вектор достаточно набрать имя вектора.push_back(что положить)

vector  test;

test.push_back(10);

test.push_back(20);

Обращение к n-ому элементу ничем не отличается от обращения к элементу массива:

test[0]++;

cout<

Для удаления последнего элемента вектора используется функция pop_back()

test.pop_back();

Еще немного полезных функций:

итераторы
begin() - итератор на первый элемент;
end() - итератор на элемент идущий после последнего;
rbegin() - итератор на последний элемент (для обратных алгоритмов);
rend() - итератор на позицию перед первым элементом (для обратных алгоритмов).

назначение элементов
assign(InputIterator first, InputIterator last) - удалить все элементы и вставить элементы из диапазона [first, last);
assign(size_type, const T& t) - удалить все элементы и вставить n элементов со значением t;
swap(reference x, reference y) - обменять значения элементов x и y (аналогична глобальной функции).

доступ к элементам
at(size_type n) - доступ к элементу с индексом n, при некорректном значении n возбуждается исключение;
back() - доступ к последнему элементу;
front() - доступ к первому элементу.

Если исключение не нужно, то для доступа к элементам можно воспользоваться перегруженной операцией [].

удаление элементов
clear() - удалить все элементы из вектора;
erase(iterator position) - удаляет указанный элемент и возвращает итератор на следующий элемент или end();
erase(iterator first, iterator last) - удаляет элементы из диапазона [first, last).

размер вектора
empty() - возвращает истину, если размер вектора 0;
reserve(size_type n) - зарезервировать место для n элементов;
capacity() - возвращает число элементов, которое можно сохранить в векторе;
resize(size_type sz) - перевыделяет текущий размер вектора;
resize(size_type sz, T c) - перевыделяет текущий размер вектора. Если новый размер больше предыдущего, то новые элементы устанавливаются в значение c, иначе в значение по умолчанию для типа T;
size() - возвращает число элементов;
max_size() - максимально возможный размер вектора.

вставка элементов
insert(iterator position, size_type n, const T& x) - вставляет n элементов со значением x в указанную позицию;
insert(iterator position, const T& x) - вставляет элемент со значением x в указанную позицию;
insert(iterator position, InputIterator first, InputIterator last) - вставляет в указанную позицию копии элементов диапазона [first, last).

поддержка стека
pop_back() - удалить последний элемент;
push_back(const T& x) - добавить в конец элемент.

перегруженные операции
[] - операция индексации, не генерирует исключение при выходе за границы массива;
= - назначить одному вектору копии элементов второго (v1 = v2);
== - определить равны ли два вектора (v1 == v2);
!= - определить не равны ли два вектора (v1 != v2);
< - меньше ли один вектор чем другой (v1 < v2);
> - больше ли один вектор чем другой (v1 > v2);
<= - меньше или равен один вектор по отношению к другому (v1 <= v2);
>= - больше или равен один вектор по отношению к другому (v1 >= v2).

vector
Для типа bool в stl введена особая специализация шаблона. В результате размер массива меньше примерно в восемь раз - 1 бит на элемент. А также добавлен дополнительный метод:
flip() - инертировать элементы.