В чем разница между вектором и массивом в C++?
В C ++ существует много различий между вектором и массивом. Однако главное сходство очень важно. Основное сходство заключается в том, что оба они представляют собой список, и каждый из них может содержать последовательность данных одного и того же типа. Основные отличия заключаются в следующем: размер (длина) вектора может быть увеличен естественным образом, но размер массива является фиксированным и не может быть увеличен. Элементы могут быть вставлены в вектор, но не могут быть вставлены в массив. Элементы могут быть добавлены в конце вектора, но не могут быть добавлены в конце массива. Вектор — это класс, из которого создаются экземпляры других векторных объектов, но массив является постоянным указателем на последовательность данных того же типа. У вектора есть методы (функции-члены), но у массива их нет, поэтому вектор называется структурой данных. Хотя указатель можно использовать с массивом, итераторы используются с вектором. Итератор — это разработанный указатель.
Перед массивом нельзя включать ни один элемент. В C ++ 17 и выше элемент может быть включен перед вектором с помощью функции-члена emplace ().
В оставшейся части этой статьи проиллюстрированы различия между вектором и массивом. Для каждой точки упоминается недееспособность массива или дается его грубый или громоздкий способ достижения той же цели.
Создание вектора или массива
Вектор можно создать несколькими способами. Основной способ выглядит следующим образом:
Соответственно, массив будет создан следующим образом:
Обратите внимание на разницу в операндах слева от оператора присваивания. Затем количество элементов вектора может быть добавлено или уменьшено, но размер массива остается фиксированным, в данном случае 5.
Чтобы иметь и использовать вектор в программе, программа должна начинаться с:
using namespace std ;
Чтобы иметь и использовать массив в программе, директива препроцессора не требуется.
Увеличение размера
В следующем коде показано, как вектор из изначально двух элементов увеличивается до четырех элементов с помощью его функции-члена push_back ():
Этот код должен быть в теле функции. Для массива, поскольку массив имеет фиксированный размер, создайте массив для максимального количества предусмотренных элементов перед добавлением элементов с помощью оператора []. Пример:
Кроме того, этот код должен находиться внутри тела функции.
Inserting
В следующем коде элемент вставляется перед элементом, на который указывает итератор, p:
for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] ‘ ‘ ;
>
Первый оператор кода создает векторный объект. Буква C, которая должна была стоять перед буквой D в алфавитном порядке, здесь отсутствует. Вторая инструкция возвращает итератор, указывающий на первый элемент вектора. Следующие два оператора увеличивают указатель до точки «D». Утверждение после присваивает букву «C» гл. В этом сегменте кода последний оператор вставляет букву «C» перед буквой «D» с помощью итератора.
Что касается массива, то нет возможности вставить элемент. Из-за подобных ограничений для массива были разработаны векторные и другие контейнеры.
Примечание. Функцию-член insert () также можно использовать для вставки элемента перед вектором.
Appending
Добавление означает добавление элементов сзади. Функцию-член push_back () можно использовать для добавления элементов в конец вектора — см. Выше. Массив нельзя добавить. Единственный способ обойти эту проблему для массива — создать массив максимально предусмотренного размера. Вставляйте элементы с самого начала. Тогда в массиве останется некоторое пространство (ячейки). Затем, если есть необходимость добавить элементы сзади, поместите элементы (значения) в пустые пространства позади (со значениями по умолчанию).
Стирание элемента
Для вектора элемент можно стереть с помощью итератора. Затем итератор укажет на следующий элемент, который был там до того, как произошло стирание. Следующий код удаляет букву B:
for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] ‘ ‘ ;
>
cout endl ;
cout * q endl ;
Ни один элемент массива нельзя стереть, но его можно изменить.
Clear
Все элементы вектора могут быть удалены с помощью его функции-члена clear () следующим образом:
Что такое векторы и как они используются в программировании?
Я знаком с математической / физической концепцией вектора как величины и направления, но я также продолжаю сталкиваться со ссылками на векторы в контексте программирования (например, C++, похоже, имеет библиотеку STL::vector, которая довольно часто появляется на SO).
моя интуиция из контекста заключалась в том, что они довольно примитивная конструкция, чаще всего используемая для представления чего-то вдоль линий массива переменной длины (сохраняя его размер как величину, Я полагаю), но было бы очень полезно, если бы кто-нибудь мог предоставить мне более полное объяснение, предпочтительно включая, как и почему они используются на практике.
11 ответов
векторные контейнеры реализованы как динамические массивы; как и обычные массивы, векторные контейнеры имеют свои элементы, хранящиеся в непрерывном запоминающем устройстве местоположения, что означает, что их элементы могут быть доступны не только использование итераторов, но также использование смещений на регулярные указатели на элементы.
но в отличие от обычных массивов, хранения в векторы обрабатываются автоматически, позволять ему быть расширенным и контракт по мере необходимости.
кроме того, векторы обычно могут содержать любой объект, поэтому вы можете создать класс для хранения информации о транспортных средствах, а затем сохранить флот в векторе.
хорошие вещи о векторах, помимо изменения размера, в том, что они по-прежнему позволяют доступ в постоянное время к отдельным элементам через индекс, как и массив.
компромисс для изменения размера, это когда вы нажмете текущий емкость он должен перераспределить, а иногда копировать, больше памяти. Однако большинство алгоритмов увеличения емкости удваивают емкость каждый раз, когда вы ударяете барьер, поэтому вы никогда не ударяете его больше, чем log2(куча доступна), которая оказывается, возможно, в дюжину раз в худшем случае на протяжении всей работы программы.
в математике вектор можно рассматривать как сочетание направления и величины. Однако его можно рассматривать и как координату. Например, вектор с величиной 5 и углом около 37 градусов от горизонтали представляет собой точку на 2D-плоскости. Эта точка также может быть представлена декартовой координатной парой (3, 4). Эта пара (3, 4) также является математическим вектором.
в программировании это имя «вектор» первоначально использовалось для описания любых последовательность скалярных чисел фиксированной длины. Вектор длины 2 представляет точку в 2D-плоскости, вектор длины 3 представляет точку в 3D-пространстве и так далее. Вектор длины 100 представляет собой точку в 100-мерном пространстве (математики без труда думают о таких вещах).
в современных библиотеках программирования это имя «вектор» обычно означает переменная размер последовательности значений (не обязательно числа). Изменение размера (длины или размерность) математического вектора-это не то, что вы обычно делаете, если вы не делаете какую-то проекционную операцию. Но изменение длины вектора программирования, содержащего последовательность строк, может быть обычной операцией.
математические векторы вы использовали для тензоры первого ранга; структуры данных в информатике не обязательно подчиняются правилам тензорного преобразования. Они просто массивы, которые могут расширяться и сжиматься, как отмечалось ранее.
векторные контейнеры реализованы как динамические массивы; так же, как и обычные массивы, векторные контейнеры имеют свои элементы, хранящиеся в смежных местах хранения, что означает, что их элементы могут быть доступны не только с помощью итераторов, но и с помощью смещений на регулярных указателях на элементы.
но в отличие от обычных массивов, хранение в векторах обрабатывается автоматически, позволяя его расширять и сжимать по мере необходимости.
Так как по крайней мере два других ответа вставлены из этот сайт, вы также можете прочитать остальную часть описания там. 
Я могу понять вашу путаницу из имен (я тоже был смущен этим). Не помогает и идея вектора в программировании 3D графики, который ближе к математическому определению. В математике вектор можно рассматривать как одномерную матрицу произвольной длины (длина-это количество измерений вашей системы координат). В большинстве языков OO векторы представляют собой по существу одномерные матрицы (массивы), отсюда и название. Им нечего делать. делайте с координатами, если программист не решит использовать их для этой задачи (что редко-я никогда этого не видел). У них также обычно нет математических операторов для выполнения матричного умножения или любых подобных операций. Таким образом, 1-мерная природа их заключается в том, где заканчивается сходство. Я оставлю это другим ответам, чтобы объяснить особенности и использование контейнера OO, с которым у них уже есть ручка.
модели компьютерной памяти, мы используем новый вид структуры данных, называемой вектором. Абстрактно вектор представляет собой составной объект данных, к отдельным элементам которого можно получить доступ с помощью целочисленного индекса за время, не зависящее от индекса.
векторы в программировании-это, в основном, динамические массивы, в которых хранилище обрабатывается автоматически, позволяя ему расширяться и сжиматься по мере необходимости.Лучше всего, что они также позволяют доступ в постоянное время к отдельным элементам через индекс, как и обычный массив.
https://isocpp.org/wiki/faq/containers имеет много информации, вам нужно понять, что окружает этот вопрос. Он будет контрастировать векторы со связанными списками, массивами и т. д.
помимо структуры данных в C++, вектор также является термином для указателя на код. F. e. вектор прерывания указывает на вызываемый код прерывания.
чтобы помочь вам вспомнить значение CS слова «вектор», может быть полезно обратиться к латинскому корню vehere, что означает передать или нести. Таким образом, вектор несет или содержит вещи, вообще говоря.
Векторы в C++: для начинающих
Всем привет! До этого дня мы использовали чистые массивы. Чистые — это значит простые массивы, не имеющие у себя в багаже различных функций. В этом уроке мы пройдем нечистые массивы — векторы.
Быстрый переход по статье:
Что такое вектор (vector)
Вектор — это структура данных, которая уже является моделью динамического массива.
Давайте вспомним о том, что для создания динамического массива (вручную) нам нужно пользоваться конструктором new и вдобавок указателями. Но в случае с векторами всего этого делать не нужно.
Вообще, по стандарту пользоваться динамическим массивом через конструктор new — не есть правильно. Так как в компьютере могут происходить различные утечки памяти.
Как создать вектор (vector) в C++
Кстати, сейчас и в будущем мы будем использовать именно шаблон вектора. Например, очередь или стек, не созданные с помощью массива или вектора, тоже являются шаблонными.
Далее, чтобы объявить вектор, нужно пользоваться конструкцией ниже:
В примере выше мы создали вектор строк.
Кстати, заполнить вектор можно еще при инициализации (другие способы мы пройдем позже — в методах вектора). Делается это также просто, как и в массивах. Вот так:
После имени вектора ставим знак равенства и скобки, в которых через пробел указываем значение элементов.
Такой способ инициализации можно использовать только в C++!
Второй способ обратиться к ячейке
Но в C++ есть еще один способ это сделать благодаря функции — at(). В скобках мы должны указать индекс той ячейки, к которой нужно обратиться.
Вот как она работает на практике:
Давайте запустим эту программу:
Как указать количество ячеек для вектора
Указывать размер вектора можно по-разному. Можно это сделать еще при его инициализации, а можно хоть в самом конце программы. Вот, например, способ указать длину вектора на старте:
Так в круглых скобках () после имени вектора указываем первоначальную длину. А вот второй способ:
Вы можете задать логичный вопрос:»А в чем разница?». Давайте создадим два вектора и по-разному укажем их количество ячеек.
Как видим, в первом случае мы вывели три нуля, а во втором: 17, 0, 0.
Все потому, что при использовании первого способа все ячейки автоматически заполнились нулями.
При объявлении чего-либо (массива, вектора, переменной и т.д) мы выделяем определенное количество ячеек памяти, в которых уже хранится ненужный для ПК мусор. В нашем случае этим мусором являются числа.
Поэтому, когда мы вывели второй вектор, в нем уже находились какие-то рандомные числа — 17, 0, 0. Обычно они намного больше. Можете кстати попробовать создать переменную и вывести ее значение.
Нужно помнить! При использовании второго способа есть некоторый плюс — по времени. Так как для первого способа компилятор тратит время, чтобы заполнить все ячейки нулями.
Как сравнить два вектора
Если в середине программы нам понадобиться сравнить два массива, мы, конечно, используем цикл for и поочередно проверим все элементы.
Вектор снова на шаг впереди! Чтобы нам сравнить два вектора, потребуется применить всего лишь оператор ветвления if.
Урок №95. Введение в std::vector
Обновл. 13 Сен 2021 |
На предыдущем уроке мы рассматривали std::array, который является более безопасной и удобной формой обычных фиксированных массивов в языке C++. Аналогично, в Стандартной библиотеке C++ есть и улучшенная версия динамических массивов (более безопасная и удобная) — std::vector.
В отличие от std::array, который недалеко отходит от базового функционала обычных фиксированных массивов, std::vector идет в комплекте с дополнительными возможностями, которые делают его одним из самых полезных и универсальных инструментов в языке C++.
Векторы
Представленный в C++03, std::vector (или просто «вектор») — это тот же динамический массив, но который может сам управлять выделенной себе памятью. Это означает, что вы можете создавать массивы, длина которых задается во время выполнения, без использования операторов new и delete (явного указания выделения и освобождения памяти). std::vector находится в заголовочном файле vector. Объявление std::vector следующее:
Обратите внимание, что в неинициализированном, что в инициализированном случаях вам не нужно явно указывать длину массивов. Это связано с тем, что std::vector динамически выделяет память для своего содержимого по запросу.
Подобно std::array, доступ к элементам массива может выполняться как через оператор [] (который не выполняет проверку диапазона), так и через функцию at() (которая выполняет проверку диапазона):
В таком случае вектор будет самостоятельно изменять свою длину, чтобы соответствовать количеству предоставленных элементов.
Нет утечкам памяти!
Когда переменная-вектор выходит из области видимости, то она автоматически освобождает память, которую контролировала (занимала). Это не только удобно (так как вам не нужно это делать вручную), но также помогает предотвратить утечки памяти. Рассмотрим следующий фрагмент:
Однако, если бы array был вектором, то подобное никогда бы и не произошло, так как память освобождалась бы автоматически при выходе array из области видимости (независимо от того, выйдет ли функция раньше из области видимости или нет). Именно из-за этого использование std::vector является более безопасным, чем динамическое выделение памяти через оператор new.
Длина векторов
В отличие от стандартных динамических массивов, которые не знают свою длину, std::vector свою длину запоминает. Чтобы её узнать, нужно использовать функцию size():
Изменить длину стандартного динамически выделенного массива довольно проблематично и сложно. Изменить длину std::vector так же просто, как вызвать функцию resize():
The length is: 7
0 1 2 0 0 0 0
Длину вектора также можно изменить и в обратную сторону (обрезать):
The length is: 4
0 1 4 7
Изменение длины вектора является затратной операцией, поэтому вы должны стремиться минимизировать количество подобных выполняемых операций.
Заключение
Это вводная статья, предназначенная для ознакомления с основами std::vector. На следующих уроках мы детально рассмотрим std::vector, в том числе и разницу между длиной и ёмкостью вектора, и то, как в std::vector выполняется выделение памяти.
Поскольку переменные типа std::vector могут сами управлять выделенной себе памятью (что помогает предотвратить утечку памяти), отслеживают свою длину и легко её изменяют, то рекомендуется использовать std::vector вместо стандартных динамических массивов.
Поделиться в социальных сетях:
Урок №94. Введение в std::array
Комментариев: 17
Я не очень поняла один момент, может, кто-то сможет подсказать, буду признательна)
В начале урока написано: «Начиная с C++11, вы также можете присваивать значения для std::vector, используя список инициализаторов … В таком случае вектор будет самостоятельно изменять свою длину, чтобы соответствовать количеству предоставленных элементов.»
А в конце показывают функцию resize( ), которая делает то же самое, но при этом является затратной.
Так вооот, насколько затратным будет изменить длину вектора через список инициализаторов и зачем тогда нужна отдельная функция? Только для работы с крупными объемами данных, чтобы не переписывать их все вручную? Или есть ещё что-то?
Юрий, вы восхитительны! У вас не только классные уроки, но и абсолютно замечательная система кросс-навигации между ними — на сайт изначально попала в поисках информации про классы. Пойду читать ваши уроки с самого начала, у меня хоть какая-то минимальная база знаний и есть, но всё равно так много новых и полезных штук открываю 🙂
Класс vector
Класс вектора стандартной библиотеки C++ является шаблоном класса для контейнеров последовательности. Вектор хранит элементы заданного типа в линейном упорядочении и обеспечивает быстрый произвольный доступ к любому элементу. Вектор является предпочтительным контейнером для последовательности, когда производительность произвольного доступа имеет уровень «Премиум».
Синтаксис
Параметры
Type
Тип данных элементов, сохраняемых в векторе.
Remarks
Для векторов время выполнения вставок и удалений элементов в конце последовательности является постоянной величиной. Время вставки и удаления элементов в середине вектора меняется линейно. Контейнер deque класса выполняется быстрее при вставке и удалении в начале и в конце последовательности. Контейнер list класса выполняется быстрее при вставке и удалении в любом месте в последовательности.
Расширение вектора происходит, когда функции-члену требуется увеличить последовательность в объекте вектора сверх его текущей емкости. Другие операции вставки и стирания могут изменять различные адреса хранения внутри последовательности. Во всех таких случаях итераторы или ссылки, указывающие на изменившиеся части последовательности, становятся недействительными. Если расширения не происходит, действительными остаются только итераторы и ссылки перед точкой вставки или удаления.
vector Ссылочный класс — это вложенный класс, объекты которого могут предоставлять ссылки на элементы (одиночные биты) внутри vector объекта.
Члены
Конструкторы
Определения типов
| Имя | Описание |
|---|---|
| [allocator_type] (#allocator_type) | Тип, представляющий класс allocator для объекта вектора. |
| const_iterator | Тип, предоставляющий итератор произвольного доступа, который может считывать const элемент в векторе. |
| const_pointer | Тип, предоставляющий указатель на const элемент в векторе. |
| const_reference | Тип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций. |
| const_reverse_iterator | Тип, предоставляющий итератор произвольного доступа, который может читать любой const элемент в векторе. |
| difference_type | Тип, представляющий различие между адресами двух элементов в векторе. |
| iterator | Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе. |
| pointer | Тип, предоставляющий указатель на элемент в векторе. |
| reference | Тип, предоставляющий ссылку на элемент, хранящийся в векторе. |
| reverse_iterator | Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе. |
| size_type | Тип, считающий количество элементов в векторе. |
| value_type | Тип, представляющий тип данных, хранящихся в векторе. |
Функции
Операторы
| Имя | Описание |
|---|---|
| operator[] | Возвращает ссылку на элемент вектора в указанной позиции. |
| operator= | Заменяет элементы вектора копией другого вектора. |
allocator_type
Тип, представляющий класс распределителя для объекта вектора.
Remarks
Пример
Пример использования allocator_type см. в разделе get_allocator.
assign
Удаляет вектор и копирует указанные элементы в пустой вектор.
Параметры
first
Положение первого элемента в диапазоне копируемых элементов.
last
Положение первого элемента за пределами диапазона копируемых элементов.
count
Количество копий элемента, вставляемых в вектор.
value
Значение элемента, вставляемого в вектор.
init_list
Объект initializer_list, содержащий вставляемые элементы.
Remarks
assign Во-первых, удаляет все существующие элементы в векторе. Затем assign либо Вставляет указанный диапазон элементов из исходного вектора в вектор, либо вставляет копии нового указанного элемента value в вектор.
Пример
Возвращает ссылку на элемент в заданном положении в векторе.
Параметры
position
Номер нижнего индекса или позиции элемента, на который включается ссылка в векторе.
Возвращаемое значение
Ссылка на элемент, индекс которого указан в аргументе. Если position значение больше размера вектора, at вызывает исключение.
Remarks
Пример
Возвращает ссылку на последний элемент вектора.
Возвращаемое значение
Последний элемент вектора. Если вектор пуст, возвращаемое значение не определено.
Remarks
При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.
Пример
begin
Возвращает итератор произвольного доступа, указывающий на первый элемент в векторе.
Возвращаемое значение
Remarks
Пример
capacity
Возвращает число элементов, которое вектор может содержать без выделения дополнительного пространства.
Возвращаемое значение
Текущая длина хранилища, выделенного вектору.
Remarks
Функция-член resize будет более эффективной, если выделить достаточно памяти для ее размещения. Используйте функцию члена, reserve чтобы указать объем выделенной памяти.
Пример
cbegin
Возвращает const итератор, который обращается к первому элементу в диапазоне.
Возвращаемое значение
const Итератор произвольного доступа, указывающий на первый элемент диапазона, или расположение непосредственно за концом пустого диапазона (для пустого диапазона cbegin() == cend() ).
Remarks
С возвращаемым значением cbegin элементы в диапазоне нельзя изменять.
Возвращает const итератор после конца, указывающий на элемент, следующий за последним элементом вектора.
Возвращаемое значение
Remarks
cend используется для проверки того, прошел ли итератор конец диапазона.
Значение, возвращаемое, cend не должно быть разыменовано. Используйте его только для сравнения.
clear
Очищает элементы вектора.
Пример
const_iterator
Тип, предоставляющий итератор произвольного доступа, который может считывать const элемент в векторе.
Remarks
Тип const_iterator нельзя использовать для изменения значения элемента.
Пример
const_pointer
Тип, предоставляющий указатель на const элемент в векторе.
Remarks
Тип const_pointer нельзя использовать для изменения значения элемента.
Для доступа к элементу вектора обычно используется iterator.
const_reference
Тип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций.
Remarks
Тип const_reference нельзя использовать для изменения значения элемента.
Пример
const_reverse_iterator
Тип, предоставляющий итератор произвольного доступа, который может читать любой const элемент в векторе.
Remarks
Тип const_reverse_iterator не может изменять значение элемента и используется для прохода по вектору в обратную.
Пример
crbegin
Возвращает константный итератор, который указывает на первый элемент в обратном векторе.
Возвращаемое значение
Remarks
При возвращении значения crbegin vector объект не может быть изменен.
Пример
crend
Возвращает обратный реверсивный const итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.
Возвращаемое значение
const Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.
Remarks
При возвращении значения crend (с соответствующим уменьшением) vector объект изменить нельзя.
Значение, возвращаемое, crend не должно быть разыменовано. Используйте его только для сравнения.
Пример
Возвращает указатель на первый элемент в векторе.
Возвращаемое значение
Пример
difference_type
Тип, предоставляющий разницу между двумя итераторами, ссылающимися на элементы в одном и том же векторе.
Remarks
difference_type также можно описать как число элементов между двумя указателями, так как указатель на элемент содержит его адрес.
Для доступа к элементу вектора обычно используется iterator.
Пример
emplace
Вставляет элемент, созданный на месте, в указанное положение в векторе.
Параметры
position
Место vector вставки первого элемента.
args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.
Возвращаемое значение
Remarks
Любая операция вставки может быть дорогостоящей, см. раздел vector класс для обсуждения vector производительности.
Пример
emplace_back
Добавляет элемент, созданный на месте, в конец вектора.
Параметры
args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.
Пример
empty
Проверяет, пуст ли вектор.
Возвращаемое значение
true значение, если вектор пуст; false значение, если вектор не пуст.
Пример
Возвращает итератор после конца, указывающий на элемент, следующий за последним элементом вектора.
Возвращаемое значение
Remarks
Пример
erase
Удаляет элемент или диапазон элементов в векторе из заданных позиций.
Параметры
position
Положение элемента, удаляемого из вектора.
first
Положение первого элемента, удаляемого из вектора.
last
Положение после последнего элемента, удаляемого из вектора.
Возвращаемое значение
Итератор, указывающий на первый элемент, оставшийся после удаленных элементов, или на указатель конца вектора, если такого элемента не существует.
Пример
front
Возвращает ссылку на первый элемент в векторе.
Возвращаемое значение
Ссылка на первый элемент в объекте вектора. Если вектор пуст, возвращаемое значение не определено.
Remarks
При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.
Пример
get_allocator
Возвращает копию объекта allocator, используемого для создания вектора.
Возвращаемое значение
Распределитель, используемый вектором.
Remarks
Распределители для класса вектора определяют, как этот класс управляет хранилищем. Распределителей по умолчанию в классах контейнеров стандартной библиотеки C++ достаточно для большинства задач программирования. Написание и использование собственного класса распределителя является расширенной функцией C++.
Пример
insert
Вставляет элемент или несколько элементов или диапазон элементов в указанную позиции в вектор.
Параметры
position
Позиция в векторе, куда вставляется первый элемент.
value
Значение элемента, вставляемого в вектор.
count
Количество элементов, вставляемых в вектор.
first
Положение первого элемента в диапазоне копируемых элементов.
last
Положение первого элемента после диапазона копируемых элементов.
Возвращаемое значение
Две первые функции insert возвращают итератор, указывающий на положение вставки нового элемента в вектор.
Remarks
В качестве предусловия first и last не должны быть итераторами в векторе или поведение не определено. Любая операция вставки может быть дорогостоящей, см. раздел vector класс для обсуждения vector производительности.
Пример
iterator
Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе.
Remarks
Тип iterator можно использовать для изменения значения элемента.
Пример
max_size
Возвращает максимальную длину вектора.
Возвращаемое значение
Максимально возможная длина вектора.
Пример
operator[]
Возвращает ссылку на элемент вектора в указанной позиции.
Параметры
position
Позиция элемента вектора.
Возвращаемое значение
Если заданная позиция больше или равна размеру контейнера, результат не определен.
Remarks
При компиляции с помощью параметра, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке доступа к элементу за пределами вектора. Дополнительные сведения см. в разделе проверенные итераторы.
Пример
operator=
Заменяет элементы вектора копией другого вектора.
Параметры
Remarks
Пример
pointer
Тип, предоставляющий указатель на элемент в векторе.
Remarks
Тип pointer можно использовать для изменения значения элемента.
Пример
pop_back
Удаляет элемент в конце вектора.
Remarks
Пример кода см. в разделе vector::push_back().
push_back
Добавляет элемент в конец вектора.
Параметры
value
Значение, назначаемое элементу, который добавляется в конец вектора.
Пример
rbegin
Возвращает итератор, указывающий на первый элемент в обратном векторе.
Возвращаемое значение
Обратный итератор произвольного доступа, указывающий на первый элемент в обратном векторе или на последний элемент в исходном векторе.
Remarks
Пример
reference
Тип, предоставляющий ссылку на элемент, хранящийся в векторе.
Пример
Возвращает обратный реверсивный итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.
Возвращаемое значение
Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.
Remarks
rend используется с обратным вектором точно так же, как end используется с вектором.
rend используется, чтобы проверить, достиг ли обратный итератор конца вектора.
Значение, возвращаемое, rend не должно быть разыменовано. Используйте его только для сравнения.
Пример
reserve
Резервирует минимальную длину хранилища для объекта вектора, при необходимости выделяя пространство.
Параметры
count
Минимальная длина хранилища, выделяемого для вектора.
Пример
resize
Определяет новый размер вектора.
Параметры
new_size
Новый размер вектора.
value
Значение инициализации новых элементов, добавленных в вектор, если новый размер больше исходного. Если значение опущено, новые объекты используют конструктор по умолчанию.
Remarks
size отражает текущий размер вектора.
Пример
reverse_iterator
Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе.
Remarks
Тип reverse_iterator используется для последовательного прохождения через вектор в обратную сторону.
Пример
shrink_to_fit
Удаляет лишнюю емкость.
Пример
Возвращает количество элементов в векторе.
Возвращаемое значение
Текущая длина вектора.
Пример
size_type
Тип, считающий количество элементов в векторе.
Пример
Меняет местами элементы двух векторов.
Параметры
Пример
value_type
Тип, представляющий тип данных, хранящихся в векторе.
Remarks
Пример
vector
Конструирует вектор. Перегрузки создают вектор определенного размера или с элементами определенного значения. Или, как копия какого-либо другого вектора или его части. Некоторые перегрузки также позволяют указать распределитель для использования.
Параметры
allocator
Класс распределителя для использования с данным объектом. get_allocator Возвращает класс распределителя для объекта.
count
Количество элементов в создаваемом векторе.
value
Значение элементов в создаваемом векторе.
source
Вектор, для которого создаваемый вектор станет копией.
first
Положение первого элемента в диапазоне копируемых элементов.
last
Положение первого элемента за пределами диапазона копируемых элементов.
init_list
Объект, initializer_list содержащий копируемые элементы.
Remarks
Все конструкторы хранят объект распределителя ( allocator ) и инициализируют вектор.
Первые два конструктора определяют пустой исходный вектор. Второй конструктор явно указывает тип распределителя ( allocator ) для использования.
Восьмой конструктор использует initializer_list, чтобы указать элементы.

Что такое вектор (vector)
Как сравнить два вектора