template<class T, class Allocator = std::allocator<T>> class vector;
Последовательный контейнер, инкапсулирующий массивы переменного размера. Элементы хранятся непрерывно, а значит доступны не только через итераторы, но и через смещения, добавляемые к указателям на элементы. Размер массива меняется в процессе выполнения программы.
#include <vector>
// Длину массива можно не указывать
std::vector<int> array;
std::vector<int> array2 = { 10, 8, 6, 4, 2, 1 }; // используется список инициализаторов для инициализации массива
std::vector<int> array3 { 10, 8, 6, 4, 2, 1 }; // используется uniform инициализация для инициализации массива (начиная с C++11)
Доступ к элементам: array.at(5) или array[5]; В первом случае проверяется индекс.
- front – доступ к первому элементу. Возвращает ссылку на первый элемент в контейнере .
- back – доступ к последнему элементу. Возвращает ссылку на последний элемент в контейнере.
Итераторы
container::iterator — итератор для чтения/записи;
container::const_iterator — итератор только для чтения
- begin() – возвращает итератор на первый элемент
- cbegin() – возвращает константный итератор на первый элемент
- end() – возвращает итератор на элемент, следующий за последним
- cend – возвращает константный итератор на элемент, следующий за последним
Содержимое
- empty() – Возвращает значение true если контейнер пуст, иначе false.
- size() – Возвращает количество элементов в контейнере.
- max_size() – Возвращает значение отражающее теоретический предел на размер контейнера.
- reserve( size_type size ) – Зарезервировать память. Дополнительная память выделяется при необходимости.
- size_type capacity() – Возвращает количество элементов, для которого сейчас выделена память контейнером.
- void shrink_to_fit() – освобождает неиспользуемую память, сокращает capacity в size.
- void clear() – очищает контейнер не изменяя размер.
- void push_back( const T& value ) – добавляет элемент в конец контейнера.
- void pop_back() – Удаляет последний элемент контейнера.
- void resize( size_type count, const value_type& value);
- void resize( size_type count ) – Изменяет размер контейнера, чтобы содержать
count
элементы. Если текущий размер меньше, чемcount
, дополнительные элементы добавляются и инициализируетсяvalue
. - void swap( vector& other ) – меняет местами элементы двух разных векторных контейнеров.
Insert — Вставляет элементы в указанную позицию в контейнере.
iterator insert( iterator pos, const T& value );
iterator insert( const_iterator pos, const T& value );(1)
iterator insert( const_iterator pos, T&& value );(2)
void insert( iterator pos, size_type count, const T& value );
iterator insert( const_iterator pos, size_type count, const T& value );(3)
template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last);
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );(4)
iterator insert( const_iterator pos, std::initializer_list<T> ilist );(5)
1-2) Вставляет value перед элементом, на который указывает pos
3) Вставляе count копий value перед элементом, на который указывает pos
4) Вставляет элементы из диапазона[first, last) перед элементом, на который указывает pos
5) Вставляет элементы из списка инициализации ilist
Вызывает реаллокацию если новый size()
больше, чем старый capacity()
.
Если новый size()
больше, чем capacity()
, все итераторы и указатели становятся нерабочими. В противном случае, нерабочими становятся только итераторы и указатели на элементы, идущие после вставленных.
Параметры
pos | — | Элемент, перед которым будет вставлено содержимое. |
value | — | Значение элемента для вставки |
first, last | — | Диапазон элементов для вставки. Не может задаваться итераторами на контейнер, в который производится вставка. |
ilist | — | Список инициализации для вставки из него. |
<hr />
erase удаляет указанные элементы из контейнера.
iterator erase( iterator pos );
iterator erase( const_iterator pos );(1)
iterator erase( iterator first, iterator last );
iterator erase( const_iterator first, const_iterator last );(2)
1) Удаляет элемент в позиции pos
2) Удаляет элементы в диапазоне [first; last)
Итераторы и указатели к удалённым элементам и к элементам, идущим за ними, становятся нерабочими.
Параметры
pos | — | итератор указывающий на удаляемый элемент |
first, last | — | диапазон удаляемых элементов |
Возвращаемое значение
Итератор, следующий за последним удаленным элементом.