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

std::vector

Материал из cppreference.com
< cpp‎ | container
 
 
 
std::vector
Функции-члены
vector::vector
vector::~vector
vector::operator=
vector::assign
vector::get_allocator
Элемент доступа
Оригинал:
Element access
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
vector::at
vector::operator[]
vector::front
vector::back
vector::data(C++11)
Итераторы
Оригинал:
Iterators
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
vector::begin
vector::cbegin

(C++11)
vector::end
vector::cend

(C++11)
vector::rbegin
vector::crbegin

(C++11)
vector::rend
vector::crend

(C++11)
Потенциала
Оригинал:
Capacity
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
vector::empty
vector::size
vector::max_size
vector::reserve
vector::capacity
vector::shrink_to_fit(C++11)
Модификаторы
vector::clear
vector::insert
vector::emplace(C++11)
vector::erase
vector::push_back
vector::emplace_back(C++11)
vector::pop_back
vector::resize
vector::swap
 
Определено в заголовочном файле <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)

[edit]

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

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

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

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

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

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

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

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

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

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

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