Выбрать главу

Функция begin() возвращает итератор, который указывает на начало вектора. Функция end() возвращает итератор, который указывает на конец вектора. Как уже разъяснялось, итераторы подобны указателям, и с помощью функций begin() и end() можно получить итераторы для начала и конца вектора соответственно.

Функция push_back() помещает заданное значение в конец вектора. При необходимости длина вектора увеличивается так, чтобы он мог принять новый элемент. С помощью функции insert() можно добавлять элементы в середину вектора. Кроме того, вектор можно инициализировать. В любом случае, если вектор содержит элементы, то для доступа к ним и их модификации можно использовать средство индексации массивов. А с помощью функции erase() можно удалять элементы из вектора.

Рассмотрим короткий пример, который иллюстрирует базовое поведение вектора.

// Демонстрация базового поведения вектора.

#include <iostream>

#include <vector>

using namespace std;

int main()

{

 vector<int> v; // создание вектора нулевой длины

 unsigned int i;

 // Отображаем исходный размер вектора v.

 cout << "Размер = " << v.size() << endl;

 /* Помещаем значения в конец вектора, и размер вектора будет по необходимости увеличиваться. */

 for(i=0; i<10; i++) v.push_back(i);

 // Отображаем текущий размер вектора v.

 cout << "Текущее содержимое:\n";

 cout << "Новый размер = " << v.size() << endl;

 // Отображаем содержимое вектора.

 for(i=0; i<v.size(); i++) cout << v[i] << " ";

 cout << endl;

 /* Помещаем в конец вектора новые значения, и размер вектора будет по необходимости увеличиваться. */

 for(i=0; i<10; i++ ) v.push_back(i+10);

 // Отображаем текущий размер вектора v.

 cout << "Новый размер = " << v.size() << endl;

 // Отображаем содержимое вектора.

 cout << "Текущее содержимое:\n";

 for(i=0; i<v.size(); i++) cout << v[i] << " ";

 cout << endl;

 // Изменяем содержимое вектора.

 for(i=0; i<v.size(); i++) v[i] = v[i] + v[i];

 // Отображаем содержимое вектора.

 cout << "Содержимое удвоено:\n";

 for(i=0; i<v.size(); i++) cout << v[i] << " ";

 cout << endl;

 return 0;

}

Результаты выполнения этой программы таковы.

Размер = 0

Текущее содержимое:

Новый размер = 10

0 1 2 3 4 5 6 7 8 9

Новый размер = 20

Текущее содержимое:

0 1 2 3 4  5  6   7  8   9  10 11 12 13 14 15 16 17 18 19

Содержимое удвоено:

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38

Рассмотрим внимательно код этой программы. В функции main() создается вектор v для хранения int-элементов. Поскольку при его создании не было предусмотрено никакой инициализации, вектор v получился пустым, а его емкость равна нулю. Другими словами, мы создали вектор нулевой длины. Это подтверждается вызовом функции-члена size(). Затем, используя функцию-член push_back(), в конец этого вектора мы помещаем 10 элементов, что заставляет вектор увеличиться в размере, чтобы разместить новые элементы. Теперь размер вектора стал равным 10. Обратите внимание на то, что для отображения содержимого вектора v используется стандартная запись индексации массивов. После этого в вектор добавляются еще 10 элементов, и вектор v автоматически увеличивается в размере, чтобы и их принять на хранение. Наконец, используя опять-таки стандартную запись индексации массивов, мы изменяем значения элементов вектора v.