Векторы

Для использования объектов типа vector необходимо добавить в программу подключение заголовочного файла:

#include <vector>

Также в примерах предположим, что в начале программы подключено использование пространства имен std.

using namespace std;

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

Описание вектора

При описании вектора, также как и при описании массива, нужно указать тип элементов, из которых он будет состоять. Количество элементов указывать не обязательно, но такая возможность есть.

Например:

vector<int> a; // создать пустой вектор vector<int> b(10); // создать вектор из 10 элементов и заполнить его нулями.

Количество элементов

Функция size() возвращает количество элементов в векторе.

Например:

vector<int> a; ... if (a.size() > 20) { }

Добавление элемента в конец вектора

Добавление элемента в конец вектора делается с помощью функции push_back(). При этом размер вектора увеличивается на 1.

Например:

vector<int> a; ... for (int i = 0; i < 10; i++ { cin >> x; a.push_back(x); }

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

Перебор элементов

Как и в случае с массивом возможен перебор элементов по индексам.

Например:

vector<int> a; ... for (int i = 0; i < 10; i++ { if (a[i] > 0) { } }

Вставка элемента в произвольное место

Вставка элемента в произвольное место массива выполняется с помощью функции insert(). Место вставки указывается с помощью итератора.

Например:

vector<int> a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); // сформировали массив из чисел (1 2 3 4) vector::iterator p; p = a.begin() + 2; // p указывает на 2-й элемент // (при нумерации с 0 - это 3-й от начала) a.insert(p, 5); // получен массив (1 2 5 3 4)

Удаление элемента

Удаление элемента выполняется с помощью функции erase(). Позиция удаляемого элемента указывается с помощью итератора.

Например:

vector<int> a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); // сформировали массив из чисел (1 2 3 4) vector::iterator p; p = a.begin() + 1; a.erase(p); // получили массив из чисел (1 3 4)

Очистка вектора

Функция clear() освобождает память из-под элементов вектора. Размер вектора становится равным нулю.

Например:

a.clear(); cout << a.size(); // будет выведено 0

Выделение памяти

Функция resize() позволяют изменить количество элементов вектора.

Например:

a.resize(500); cout << a.size(); // будет выведено 500

При вводе массива рекомендуется сначала задать ему требуемый размер, а уже потом организовывать поэлементный ввод, по аналогии с массивом.

Последнее изменение: Суббота, 15 Август 2020, 02:34