Таблица 4
Операции обращения к элементам вектора
Операция |
Описание |
v.at(idx) |
Возвращает элемент с индексом idx (при недопустимом значении индекса генерируется исключение out_of_range) |
v[idx] |
Возвращает элемент с индексом idx (без интервальной проверки!) |
v.front() |
Возвращает первый элемент (без проверки его существования!) |
v.back() |
Возвращает последний элемент (без проверки его существования!) |
Векторы поддерживают стандартный набор операций для получения итераторов (табл. 5). Итераторы векторов относятся к категории итераторов произвольного доступа. Это означает, что с векторами в принципе могут использоваться все алгоритмы STL.
Таблица 5
Операции получения итераторов
Операция |
Описание |
v.begin() |
Возвращает итератор произвольного доступа для первого элемента |
v.end() |
Возвращает итератор произвольного доступа для позиции за последним элементом |
Пример 5
vector<char> v; // Создание массива нулевой длины
//Помещаем значения в вектор
for(int i = 0; i < 10; i++) v.push_back('A' + i);
// Получаем доступ к содержимому вектора с помощью итератора
vector<char>::iterator it;
for (it = v.begin(); it != v.end(); it++) cout << *it <<" ";
Результат
A B C D E F G H I J
v.end() возвращает итератор, указывающий не на последний элемент контейнера, а на непосредственно следующий за ним элемент. Это часто бывает удобно. Например, для любого контейнера v разность (v.end() - v.begin())всегда равна v.size() (табл. 6).
Таблица 6
Операции вставки и удаления для векторов
Операция |
Описание |
v.insert(pos,elem) |
Вставляет в позицию итератора pos копию элемента elem и возвращает позицию нового элемента |
v.insert(pos,n,elem) |
Вставляет в позицию итератора pos n копий элемента elem (и не возвращает значения) |
v.insert(pos,beg,end) |
Вставляет копию всех элементов интервала [beg,end) в позицию итератора pos (и не возвращает значения) |
Окончание табл. 6
Операция |
Описание |
v.push_back(elem) |
Присоединяет копию elem в конец вектора |
v.pop_back() |
Удаляет последний элемент (не возвращая его) |
v.erase(pos) |
Удаляет элемент в позиции итератора pos и возвращает позицию следующего элемента |
v.erase(beg,end) |
Удаляет все элементы из интервала [beg,end) и возвращает позицию следующего элемента |
v.cleаr() |
Удаляет все элементы (контейнер остается пустым) |
Пример 6
vector<char> v;
for(int i=0; i<10; i++) v.push_back('A' + i);
// Отображаем исходное содержимое вектора.
cout << "Размер = " << v.size() << endl;
cout << "Исходное содержимое вектора:\n";
for(int i=0; i<v.size(); i++) cout << v[i] << " ";
cout << endl << endl;
//Вводим итератор it и присваиваем ему адрес первого элемента
//в векторе
vector<char>:: iterator it= v.begin();
it += 2; // указатель на 3-й элемент вектора
// Вставляем 10 символов 'X' в вектор v.
v.insert(it,10, 'X');
// Отображаем содержимое вектора после вставки символов
cout << "Размер вектора после вставки = "<< v.size() << endl;
cout << "Содержимое вектора после вставки:\n";
for(i=0; i<v.size(); i++) cout << v[i] << " ";
cout << endl << endl;
// Удаление вставленных элементов.
it = v.begin();
it += 2; // Указатель на 3-й элемент вектора
v.erase(it, it+10); // Удаляем 10 элементов подряд
// Отображаем содержимое вектора после удаления символов
cout << "Размер вектора после удаления символов = " << v.size() << endl;
cout << Содержимое вектора после удаления символов:\n";
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.