Пространства имён
Варианты
Действия

std::vector

Материал из cppreference.com
< cpp‎ | container
Определено в заголовочном файле <vector>
template<

    class T,
    class Allocator = std::allocator<T>

> class vector;

std::vector представляет собой последовательный контейнер, который инкапсулирует массивы переменного размера.

Элементы хранятся непрерывно, поэтому элементы доступны не только через итераторы, но и через смещения на обычные указатели элементов. Это означает, что указатель на элемент может быть передан любой функции, которая ожидает указатель на элемент массива.

Хранилище вектора обрабатывается автоматически, расширяясь и сужаясь по мере необходимости. Вектор обычно занимает больше места, чем статические массивы, потому что некоторое количество памяти выделяется на обработку будущего роста. Таким образом, вектор не нужно перераспределить при вставке элемента, а только при исчерпании дополнительной памяти. Общий объём выделенной памяти можно получить с помощью функции capacity(). Дополнительная память может быть возвращена системе через вызов shrink_to_fit().

Перераспределения являются, как правило, дорогостоящими операциями в плане производительности. Функция reserve() может использоваться для устранения перераспределений, если количество элементов известно заранее.

Сложность (эффективность) обычных операций над векторами следующая:

  • Произвольный доступ — постоянная O(1)
  • Вставка и удаление элементов в конце — амортизированная постоянная O(1)
  • Вставка и удаление элементов — линейная по расстоянию до конца вектора O(n)

std::vector отвечает требованиям Container, AllocatorAwareContainer, SequenceContainer и ReversibleContainer.

Содержание

[править] Параметры шаблона

T - Тип элементов.
Тип T должен соответствовать требованиям CopyAssignable и CopyConstructible. (до C++11)
Требования, налагаемые на элементы, зависят от конкретных операций, производимых с контейнером. Как правило, требуется, чтобы тип элементов соответствовал требованиям MoveConstructible и MoveAssignable, но многие функции-члены налагают более строгие требования. (начиная с C++11)

[править]

Allocator - Аллокатор, используемый для выделения памяти под элементы. Тип должен соответствовать требованиям Allocator. [править]

[править] Специализации

Стандартная библиотека содержит специализацию std::vector для типа bool, которая эффективно использует память.

Компактный динамический BitSet
(шаблон класса) [править]

[править] Типы-члены

Тип-член Определение
value_type T [править]
allocator_type Allocator [править]
size_type Беззнаковый целочисленный тип (обычно size_t) [править]
difference_type Знаковый целочисленный тип (обычно std::ptrdiff_t) [править]
reference Allocator::reference (до C++11)
value_type& (начиная с C++11) [править]
const_reference Allocator::const_reference (до C++11)
const value_type& (начиная с C++11) [править]
pointer Allocator::pointer (до C++11)
std::allocator_traits<Allocator>::pointer (начиная с C++11) [править]
const_pointer Allocator::const_pointer (до C++11)
std::allocator_traits<Allocator>::const_pointer (начиная с C++11) [править]
iterator RandomAccessIterator [править]
const_iterator Константный итератор с произвольным доступом [править]
reverse_iterator std::reverse_iterator<iterator> [править]
const_reverse_iterator std::reverse_iterator<const_iterator> [править]

[править] Функции-члены

Создаёт vector
(public функция-член) [править]
Уничтожает vector
(public функция-член) [править]
Задаёт значения в контейнере
(public функция-член) [править]
Задаёт значения в контейнере
(public функция-член) [править]
Возвращает связанный аллокатор
(public функция-член) [править]
Доступ к элементам
Предоставляет доступ к указанному элементу с проверкой индекса
(public функция-член) [править]
Предоставляет доступ к указанному элементу
(public функция-член) [править]
Предоставляет доступ к первому элементу
(public функция-член) [править]
Предоставляет доступ к последнему элементу
(public функция-член) [править]
(C++11)
Предоставляет прямой доступ к внутреннему содержимому
(public функция-член) [править]
Итераторы
Возвращает итератор на первый элемент
(public функция-член) [править]
Возвращает итератор на элемент, следующий за последним
(public функция-член) [править]
Возвращает обратный итератор на первый элемент
(public функция-член) [править]
Возвращает обратный итератор на элемент, следующий за последним
(public функция-член) [править]
Вместимость
Проверяет отсутствие элементов в контейнере
(public функция-член) [править]
Возвращает количество элементов в контейнере
(public функция-член) [править]
Возвращает максимально допустимое количество элементов в контейнере
(public функция-член) [править]
Зарезервировать память.
(public функция-член) [править]
Возвращает количество элементов, которые могут одновременно храниться в выделенной области памяти
(public функция-член) [править]
Уменьшает использование памяти, высвобождая неиспользуемую
(public функция-член) [править]
Модификаторы
Очищает контейнер
(public функция-член) [править]
Вставляет элементы
Оригинал:
inserts elements
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
(C++11)
Конструирует элементы "на месте" и вставляет их
(public функция-член) [править]
Удаляет элементы
(public функция-член) [править]
Добавляет элемент в конец
(public функция-член) [править]
Конструирует элементы "на месте" в конце контейнера
(public функция-член) [править]
Удаляет последний элемент
(public функция-член) [править]
Изменяет количество хранимых элементов
(public функция-член) [править]
Обменивает содержимое
(public функция-член) [править]

[править] Функции-не члены

Лексикографически сравнивает значения в vector
(шаблон функции) [править]
Специализированный std::swap алгоритм
(шаблон функции) [править]