std::vector

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диапазон удаляемых элементов

Возвращаемое значение

Итератор, следующий за последним удаленным элементом.