- BestProg
- Класс vector . Методы, обеспечивающие доступ к элементам массива. Методы at() , front() , back() , data() , begin() , end() , cbegin() , cend() , rbegin() , rend() , crbegin() , crend()
- Содержание
- Вывести последний элемент вектора
- Обращение к последнему элементу вектора
- Как использовать вектор (vecto) в C++
- Класс и объекты
- Класс Vector
- Создание экземпляра вектора
- Перегрузка функции
- Построение вектора
- Конструирование с инициализацией
- Назначение вектора во время Construction
- const Vector
- Конструирование с помощью Iterator
- Уничтожение вектора
- Емкость вектора
- Присвоение значения с помощью нижнего индекса
- Присвоение значения с помощью функции at ()
- Проблема с подпрограммами
- Доступ к векторным данным
- Возвращение итераторов и вектора
- Обратная итерация
- Векторные модификаторы
- Операторы равенства и отношения для векторов
BestProg
Класс vector . Методы, обеспечивающие доступ к элементам массива. Методы at() , front() , back() , data() , begin() , end() , cbegin() , cend() , rbegin() , rend() , crbegin() , crend()
Перед изучением данной темы рекомендуется ознакомиться со следующей темой:
Содержание
Поиск на других ресурсах:
1. Метод at() . Получить элемент вектора по его позиции
Метод at() используется для доступа к конкретному элементу массива на основе заданного индекса. Метод имеет 2 перегруженные реализации
здесь T – тип элементов массива.
Первая реализация используется для чтения элемента из массива. Вторая реализация используется для изменения элемента массива.
Пример.
2. Метод front() . Возвращает ссылку на первый элемент вектора
С помощью метода front() можно получить ссылку на первый элемент массива. Синтаксис объявления двух перегруженных реализаций метода следующий
Первая реализация метода позволяет считывать значение первого элемента массива. Вторая реализация позволяет записывать значения в первый элемент массива.
Пример.
3. Метод back() . Возвращает ссылку на последний элемент вектора
Чтобы получить доступ к последнему элементу вектора используется метод back() . Этот метод имеет 2 перегруженных реализации, синтаксис объявления которых следующий
Первая реализация используется, когда нужно считать значение из последнего элемента вектора. Вторая реализация используется, когда нужно записать значение в последний элемента вектора.
Пример.
4. Метод data() . Получить указатель на вектор
Метод data() позволяет получить указатель на динамический массив. С помощью этого указателя можно иметь доступ к элементам вектора как к обычному массиву.
Синтаксис объявления метода следующий:
тут T – тип элементов вектора.
Пример.
5. Метод begin() . Вернуть итератор, указывающий на первый элемент вектора
Метод begin() возвращает итератор, указывающий на первый элемент динамического массива. Метод имеет следующую общую форму:
здесь T – тип элементов массива.
Пример.
6. Метод end() . Вернуть итератор, указывающий на последний элемент массива
Метод end() устанавливает итератор на конец массива. Это означает, что итератор установлен на элемент, следующий за последним элементом массива.
Рисунок 1. Установка итераторов методами begin() и end() . Размер массива size()
Синтаксис объявления метода следующий
Пример.
7. Методы cbegin(), cend() . Установить константный итератор на начало и конец массива
При работе с итераторами, кроме обычных итераторов различают константные итераторы. В библиотеке STL стандартный итератор объявляется с использованием типа iterator
Константный итератор объявляется с использованием типа constant_iterator
- T – тип элементов массива;
- constant_iterator – тип, определяющий константный итератор;
- ConstIt – имя константного итератора.
В отличие от обычного (стандартного) итератора, невозможно изменить значение элемента массива с константным итератором. То есть, присваивание константному итератору некоторого значения value
вызовет ошибку компиляции.
Методы cbegin() и cend() предназначены для получения константного итератора, который указывает соответственно на начало и конец массива. Общая форма объявления методов следующая
здесь T – тип элементов массива.
Метод cend() возвращает итератор, указывающий на элемент, следующий за последним элементом массива.
Пример.
8. Методы rbegin() , rend() . Доступ к элементам массива с помощью реверсного итератора
Реверсный итератор отличается от обычного итератора тем, что порядок следования элементов рассматривается от конца к началу. С этой точки зрения вносятся все возможные изменения в методах обработки и операциях над итераторами. Так, например, операция приращения итератора it++ осуществляет переход к предыдущему элементу итератора, а не к следующему, как в обычном итераторе.
Реверсный итератор объявляется с использованием ключевого слова reverse_iterator
- T – тип элементов вектора;
- itReverse – имя итератора.
Методы rbegin() rend () работают с реверсными итераторами. Они позволяют получить итераторы, указывающие соответственно на начало ( rbegin ) и конец ( rend ) массива. Методы имеют следующие перегруженные реализации
Одна из реализаций методов rbegin() и rend() позволяет работать как обычный итератор, допускающий чтение/запись. Вторая реализация этих методов работает как константный итератор, допускающий только чтение.
Пример.
Результат выполнения программы
9. Методы crbegin() , crend() . Установить на начало и конец массива константный реверсный итератор
Кроме константного итератора constant_iterator , в библиотеке STL введён константный реверсный итератор, который рассматривает массив от конца до начала. Такой итератор объявляется следующим образом
- T – тип элементов массива;
- itConstReverse – имя константного реверсного итератора.
Изменить значение элементов массива с помощью константного реверсного итератора не удастся.
Методы crbegin() , crend() предназначены для работы с типом константного реверсного итератора constant_reverse_iterator и имеют следующие объявления
Источник
Вывести последний элемент вектора
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поставить последний элемент вектора в середину
У меня получилось что просто происходит замена элемента с середины с последним элементом.
Найти максимальный элемент массива и вывести последний четный элемент
Короче нужно чтобы програма нашла максимальный елемент масива и выводила на екран последное четное.
Напишите программу, которая циклически сдвигает элементы вектора вправо. Последний элемент встаёт в начало
Напишите программу, которая циклически сдвигает элементы вектора вправо. Последний элемент встаёт в.
Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу.
Вывести минимальный элемент вектора
Помогите исправить код*надо вывести вектор из 6 чисел(выводит только из 5),а еще я не знаю как.
Не получается вывести и удалить последний элемент контейнера map
Не получается вывести и удалить последний элемент контейнера map. Для первого (begin) всё.
Массив: вывести 1й положительный и последний отрицательный элемент массива
Нужно вывести 1й положительный и последний отрицательный элемент массива.И посчитать сумму.
Источник
Обращение к последнему элементу вектора
Здравствуйте, мне нужно сравнить последний элемент вектора с числом и в зависимости от того, какое это число, выполнить дальнейшие действия.
Насколько я понял, end() это как бы не существующий элемент, стоящий после последнего.
То есть он не несёт в себе номер элемента, а если его разыменовать, то это будет сам элемент.
Дело попахивает итераторами. В общем я запутался, подскажите кто, что сможет))
Если подробнее, то я проверяю последний элемент на 1, либо на 2. И хочу сделать это с помощью switch(vect.end()) (грубо).
Помощь в написании контрольных, курсовых и дипломных работ здесь.
STL . Обращение к 12 элементу вектора
Добрый вечер, форумчане! Столкнулся вот с такой проблемой. Имеется вектор, заполненный числами.
Обращение к конкретному элементу двумерного вектора
Здравствуйте. Делаю лабу и не могу разобраться в некоторых вопросах. Нужно обратиться к.
Обращение к элементу структуры (вектора) без явного указание онного
Доброго времени суток. Вопрос прям подмывает. есть структура struct xx< int yy; int ww;.
Что быстрее? Обращение к элементу массива или к элементу структуры?
Обращение к элементу массива или к элементу структуры? Экспериментирую с кодом и получается.
Источник
Как использовать вектор (vecto) в C++
Массив — это серия объектов одного и того же типа в последовательных ячейках памяти. Массив не может увеличить длину руды. Вектор похож на массив, но его длина может быть увеличена или уменьшена. Следовательно, вектор имеет гораздо больше операций, чем массив.
C ++ имеет множество библиотек, все из которых составляют стандартную библиотеку C ++. Одна из этих библиотек — это библиотека контейнеров. Контейнер — это набор объектов, и с этой коллекцией можно выполнять определенные операции. Контейнеры C ++ можно сгруппировать в два набора: контейнеры последовательности и ассоциативные контейнеры. Контейнеры последовательности — это vector, array (не тот массив, который обсуждался ранее), deque, forward_list и list. Это разные коллекции (структуры данных, подобные массивам), и каждая предлагает различные компромиссы.
Любой программист должен знать, как решить, использовать ли вектор, массив, двухстороннюю очередь, forward_list или список. Когда программисту нужна структура, которая требует больше операций, чем те, которые связаны с обычным массивом, обычный массив использовать не следует.
Если задача включает частые вставки и удаления в середине последовательности, следует использовать список или forward_list. Если задача включает частые вставки и удаления в начале или конце последовательности, следует использовать двухстороннюю очередь. Вектор следует использовать, когда такого рода операции не требуются.
В этой статье показано, как использовать вектор C ++. Для понимания этой статьи вам потребуются некоторые знания указателей, ссылок и массивов C ++.
Класс и объекты
Класс — это набор переменных и функций, которые работают вместе, где переменным не присвоены значения. Когда переменным присваиваются значения, класс становится объектом. Различные значения, присвоенные одному и тому же классу, приводят к разным объектам; то есть разные объекты могут принадлежать к одному классу, но иметь разные значения. Создание объекта из класса также известно как создание экземпляра объекта.
Термин вектор описывает класс. Объект, созданный из вектора, имеет имя, выбранное программистом.
Функция, принадлежащая классу, необходима для создания экземпляра объекта из класса. В C ++ эта функция имеет то же имя, что и имя класса. Различные объекты, созданные (экземпляры) из класса, имеют разные имена, данные каждому из них программистом.
Создание объекта из класса означает создание объекта; это также означает создание экземпляра объекта.
Класс Vector
Векторный класс уже определен и находится в библиотеке. Чтобы использовать векторный класс, программист должен включить векторный заголовок в файл со следующей директивой предварительной обработки:
После включения заголовка становятся доступными все векторные функции (элементы данных и функции-члены). Чтобы использовать объект счетчика для вывода данных на терминал (консоль), также должен быть включен заголовок объекта. Чтобы написать программу с вектором, как минимум должны быть включены следующие заголовки:
Создание экземпляра вектора
Выше объявление массива с именем «foo» и количеством элементов «10». Это массив целых чисел. Объявление вектора аналогично. Для вектора количество элементов не является обязательным, поскольку длина вектора может увеличиваться или уменьшаться.
На этом этапе программы векторный класс уже определен в библиотеке, и заголовок включен. Вектор может быть создан следующим образом:
Здесь вектор принадлежит специальной функции-конструктору. Тип данных, которые будет содержать вектор, — это «int» в угловых скобках. Термин «vtr» — это имя, выбранное программистом для вектора. Наконец, «8» в скобках — это ориентировочное количество целых чисел, которые будет иметь вектор.
Термин «std» означает стандартное пространство имен. В этом контексте после этого термина должно стоять двойное двоеточие. Кто угодно может написать свою собственную библиотеку векторных классов и использовать ее. Однако в C ++ уже есть стандартная библиотека со стандартными именами, включая «вектор». Чтобы использовать стандартное имя, стандартному имени должен предшествовать std . Чтобы не вводить std :: каждый раз в программе для стандартного имени, файл программы может запускаться следующим образом:
Перегрузка функции
Когда две или более разных сигнатур функций имеют одно и то же имя, это имя считается перегруженным. Когда вызывается одна функция, количество и тип аргументов определяют, какая функция выполняется.
Построение вектора
Построение вектора означает инстанцирование (создание) векторного объекта. Функция-конструктор перегружается следующим образом:
vector name
Это создает вектор нулевой длины и набирает «T.» Следующая инструкция создает вектор нулевой длины типа «float» с именем «vtr»:
vector name (n)
Это создает вектор с n элементами типа «T.» Утверждение для этого вектора с четырьмя элементами с плавающей запятой выглядит следующим образом:
vector name (n, t)
Это создает вектор из n элементов, инициализированных значением t. Следующий оператор создает вектор из 5 элементов, каждый из которых имеет значение 3,4:
Конструирование с инициализацией
Вектор может быть сконструирован (создан) и инициализирован одновременно одним из следующих двух способов:
Обратите внимание, что сразу после имени объекта скобок нет. Круглые скобки, используемые сразу после имени объекта, должны содержать список инициализаторов, как показано ниже:
Вектор может быть создан и инициализирован позже с помощью списка инициализаторов. В этом случае круглые скобки использоваться не будут:
Это конструктор копирования. Он создает вектор V2 как копию вектора V1. Следующий код иллюстрирует это:
Назначение вектора во время Construction
Во время построения может быть создан пустой вектор, в то время как ему назначен другой, следующим образом:
Второй оператор эквивалентен:
const Vector
Константный вектор — это вектор, элементы которого нельзя изменить. Значения в этом векторе доступны только для чтения. При создании вектор выглядит следующим образом:
В этом векторном типе ни один элемент не может быть добавлен или удален. Более того, никакое значение не может быть изменено.
Конструирование с помощью Iterator
Шаблон предоставляет общее представление для типа данных. Итератор обеспечивает общее представление сканирования значений контейнера. Синтаксис для создания вектора с итератором следующий:
template class InputIterator >
vector ( InputIterator first , InputIterator last , const Allocator & = Allocator ( ) ) ;
Это создает вектор для диапазона [первый, последний) с использованием указанного распределителя, который будет обсуждаться позже в этой статье.
Уничтожение вектора
Чтобы уничтожить вектор, просто позвольте ему выйти из области видимости, и уничтожение будет выполнено автоматически.
Емкость вектора
size_type capacity () const noexcept
Общее количество элементов, которые вектор может содержать без перераспределения, возвращается функцией-членом емкости. Сегмент кода для этого выглядит следующим образом:
vector float > vtr ( 4 ) ;
int num = vtr. capacity ( ) ;
cout num ‘ \n ‘ ;
reserve(n)
Пространство памяти не всегда доступно. Дополнительное место можно зарезервировать заранее. Рассмотрим следующий фрагмент кода:
vector float > vtr ( 4 ) ;
vtr. reserve ( 6 ) ;
cout vtr. capacity ( ) ‘ \n ‘ ;
Результатом будет 6. Таким образом, зарезервировано дополнительное пространство 6 — 4 = 2 элемента. Функция возвращает void.
size () const noexcept
Это возвращает количество элементов в векторе. Следующий код иллюстрирует эту функцию:
vector float > vtr ( 4 ) ;
float sz = vtr. size ( ) ;
cout sz ‘ \n ‘ ;
shrink_to_fit()
После предоставления дополнительной емкости вектору с помощью функции reserve () размер вектора можно уменьшить, чтобы он соответствовал его исходному размеру. Следующий код иллюстрирует это:
vector float > vtr ( 4 ) ;
vtr. reserve ( 6 ) ;
vtr. shrink_to_fit ( ) ;
int sz = vtr. size ( ) ;
cout sz ‘ \n ‘ ;
На выходе будет 4, а не 6. Функция возвращает void.
resize(sz), resize(sz,c)
Это изменяет размер вектора. Если новый размер меньше старого, то элементы ближе к концу стираются. Если новый размер больше, то ближе к концу добавляется какое-то значение по умолчанию. Чтобы добавить определенную ценность, используйте функцию resize () с двумя аргументами. Следующий фрагмент кода иллюстрирует использование этих двух функций:
vector float > vtr1 < 1.1 , 2.2 , 3.3 , 4.4 >;
vtr1. resize ( 2 ) ;
cout «New size of vtr1: « vtr1. size ( ) ‘ \n ‘ ;
vector float > vtr2 < 1.1 , 2.2 >;
vtr2. resize ( 4 , 8.8 ) ;
cout «vtr2: « vtr2 [ ] » « vtr2 [ 1 ] »
« vtr2 [ 2 ] » « vtr2 [ 3 ] ‘ \n ‘ ;
New size of vtr1: 2
vtr2: 1.1 2.2 8.8 8.8
Функции возвращают void.
empty() const noexcept
Эта функция возвращает 1 для истины, если в векторе нет элементов, и 0 для false, если вектор пуст. Если вектор имеет 4 местоположения для определенного типа данных, например, с плавающей запятой, без какого-либо значения с плавающей запятой, то этот вектор не является пустым. Следующий код иллюстрирует это:
vector float > vtr ;
cout vtr. empty ( ) ‘ \n ‘ ;
vector float > vt ( 4 ) ;
cout vt. empty ( ) ‘ \n ‘ ;
vector float > v ( 4 , 3.5 ) ;
cout v. empty ( ) ‘ \n ‘ ;
Доступ к элементу вектора
Вектор может быть подписан (проиндексирован) как массив. Подсчет индекса начинается с нуля.
vectorName[i]
Операция «vectorName [i]» возвращает ссылку на элемент в i- м индексе вектора. Следующий код выводит 3.3 для указанного выше вектора:
vectorName [i] const
Операция «vectorName [i] const» выполняется вместо «vectorName [i]», когда вектор является постоянным вектором. Эта операция используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
float fl = vtr [ 2 ] ;
cout fl ‘ \n ‘ ;
Выражение возвращает постоянную ссылку на i- й элемент вектора.
Присвоение значения с помощью нижнего индекса
Значение может быть присвоено непостоянному вектору следующим образом:
На выходе получается 8.8.
vectorName.at (i)
«VectorName.at (i)» похож на «vectorName [i]», но «vectorName.at (i)» более надежен. Следующий код показывает, как следует использовать этот вектор:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
float fl = vtr. at ( 2 ) ;
cout fl ‘ \n ‘ ;
at ( ) is a vector member function .
vectorName.at (i) const
«VectorName.at (i) const» похоже на «vectorName [i] const», но «vectorName.at (i) const» более надежен. «VectorName.at (i) const» выполняется вместо «vectorName.at (i)», когда вектор является постоянным вектором. Этот вектор используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
float fl = vtr. at ( 2 ) ;
cout fl ‘ \n ‘ ;
at ( ) const is a vector member function .
Присвоение значения с помощью функции at ()
Значение может быть присвоено непостоянному вектору с помощью функции at () следующим образом:
На выходе получается 8.8.
Проблема с подпрограммами
Проблема с дополнительными сценариями (индексированием) заключается в том, что если индекс выходит за пределы допустимого диапазона, может быть возвращен ноль или может возникнуть ошибка во время выполнения.
front()
Это возвращает ссылку на первый элемент вектора без удаления элемента. Результатом следующего кода является 1.1.
Элемент не удаляется из вектора.
front() const
Когда конструкции вектора предшествует const, выражение «front () const» выполняется вместо «front ()». Это используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
float fl = vtr. front ( ) ;
cout fl ‘ \n ‘ ;
Возвращается постоянная ссылка. Элемент не удаляется из вектора.
back()
Это возвращает ссылку на последний элемент вектора без удаления элемента. Вывод следующего кода — 4.4.
back() const
Когда конструкции вектора предшествует const, выражение «back () const» выполняется вместо «back ()». Это используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
float fl = vtr. back ( ) ;
cout fl ‘ \n ‘ ;
Возвращается постоянная ссылка. Элемент не удаляется из вектора.
Доступ к векторным данным
data() noexcept; data() const noexcept;
Любой из них возвращает указатель, такой что [data (), data () + size ()) — является допустимым диапазоном.
Подробнее об этом будет рассказано позже в статье.
Возвращение итераторов и вектора
Итератор похож на указатель, но имеет больше функций, чем указатель.
begin() noexcept
Возвращает итератор, указывающий на первый элемент вектора, как в следующем сегменте кода:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: iterator iter = vtr. begin ( ) ;
cout * iter ‘ \n ‘ ;
На выходе получается 1.1. Обратите внимание, что объявление, которое получает итератор, было объявлено. Итератор разыменовывается в возвращаемом выражении для получения значения так же, как разыменование указателя.
begin () const noexcept;
Возвращает итератор, указывающий на первый элемент вектора. Когда конструкции вектора предшествует константа, выражение «begin () const» выполняется вместо «begin ()». При этом условии соответствующий элемент в векторе не может быть изменен. Это используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: const_iterator iter = vtr. begin ( ) ;
cout * iter ‘ \n ‘ ;
На выходе получается 1.1. Обратите внимание, что на этот раз был использован «const_iterator» вместо простого «итератора» для получения возвращенного итератора.
end() noexcept
Возвращает итератор, который указывает сразу за последним элементом вектора. Рассмотрим следующий фрагмент кода:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: iterator iter = vtr. end ( ) ;
cout * iter ‘ \n ‘ ;
Результатом будет 0, что бессмысленно, поскольку за последним элементом нет конкретного элемента.
end() const noexcept
Возвращает итератор, который указывает сразу за последним элементом вектора. Когда конструкции вектора предшествует «const», выражение «end () const» выполняется вместо «end ()». Рассмотрим следующий фрагмент кода:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: const_iterator iter = vtr. end ( ) ;
cout * iter ‘ \n ‘ ;
Результатом будет 0. Обратите внимание, что на этот раз был использован «const_iterator» вместо простого «итератора» для получения возвращенного итератора.
Обратная итерация
Возможно иметь итератор, который выполняет итерацию от конца до самого первого элемента.
rbegin() noexcept
Возвращает итератор, указывающий на последний элемент вектора, как в следующем сегменте кода:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: reverse_iterator rIter = vtr. rbegin ( ) ;
cout * rIter ‘ \n ‘ ;
Обратите внимание, что объявлено объявление, получающее обратный итератор. Итератор разыменовывается в возвращаемом выражении для получения значения так же, как разыменование указателя.
rbegin () const noexcept;
Возвращает итератор, указывающий на последний элемент вектора. Когда конструкции вектора предшествует «const», выражение «rbegin () const» выполняется вместо «rbegin ()». При этом условии соответствующий элемент в векторе не может быть изменен. Эта функция используется в следующем коде:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: const_reverse_iterator rIter = vtr. rbegin ( ) ;
cout * rIter ‘ \n ‘ ;
Обратите внимание, что на этот раз был использован const_reverse_iterator вместо только reverse_iterator для получения возвращенного итератора.
rend () noexcept
Возвращает итератор, который указывает непосредственно перед первым элементом вектора. Рассмотрим следующий фрагмент кода:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: reverse_iterator rIter = vtr. rend ( ) ;
cout * rIter ‘ \n ‘ ;
Результатом будет 0, что не имеет смысла, поскольку непосредственно перед первым элементом нет конкретного элемента.
rend () const noexcept
Возвращает итератор, который указывает непосредственно перед первым элементом вектора. Когда конструкции вектора предшествует «const», выражение «rend () const» выполняется вместо «rend ()». Рассмотрим следующий фрагмент кода:
const vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float >:: const_reverse_iterator rIter = vtr. rend ( ) ;
cout * rIter ‘ \n ‘ ;
Обратите внимание, что на этот раз был использован const_reverse_iterator вместо только reverse_iterator для получения возвращенного итератора.
Векторные модификаторы
Модификатор, изменяющий вектор, может принимать или возвращать итератор.
a.emplace (p, args)
Вставляет объект типа T, созданный с помощью std :: forward (args)… перед p.
insert(iteratorPosition, value)
Вставляет копию значения в позицию итератора вектора. Возвращает итератор (позицию) в векторе, куда была помещена копия. Следующий код показывает, где было размещено значение:
vector int > vtr < 10 , 20 , 30 , 40 >;
vector int >:: iterator iter = vtr. begin ( ) ;
++ iter ;
++ iter ;
vtr. insert ( iter , 25 ) ;
cout vtr [ 1 ] ‘ ‘ vtr [ 2 ] ‘
‘ vtr [ 3 ] ‘ \n ‘ ;
Обратите внимание, что итератор был расширен (увеличен) точно так же, как указатель.
Также можно вставить список инициализаторов, как показано в следующем коде:
vector int > vtr < 10 , 20 , 30 , 40 >;
vector int >:: iterator iter = vtr. begin ( ) ;
++ iter ;
++ iter ;
vtr. insert ( iter , < 25 , 28 >) ;
cout vtr [ 1 ] ‘ ‘ vtr [ 2 ] ‘
‘ vtr [ 3 ] ‘ ‘ vtr [ 4 ] ‘ \n ‘ ;
Вывод: 20 25 28 30.
erase(position)
Удаляет элемент в позиции, на которую указывает итератор, затем возвращает позицию итератора. Следующий код иллюстрирует это:
vector int > vtr < 10 , 20 , 30 , 40 >;
vector int >:: iterator iter = vtr. begin ( ) ;
++ iter ;
++ iter ;
vtr. erase ( iter ) ;
cout vtr [ ] ‘ ‘ vtr [ 1 ] ‘
‘ vtr [ 2 ] ‘ \n ‘ ;
push_back(t), push_back(rv)
Используется для добавления одного элемента в конец вектора. Используйте push_back (t) следующим образом:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vtr. push_back ( 5.5 ) ;
float fl = vtr [ 4 ] ;
cout fl ‘ \n ‘ ;
pop_back()
Удаляет последний элемент, не возвращая его. Размер вектора уменьшается на 1. Следующий код иллюстрирует это:
vector float > vtr < 1.1 , 2.2 , 3.3 , 4.4 >;
vtr. pop_back ( ) ;
float sz = vtr. size ( ) ;
cout sz ‘ \n ‘ ;
a.swap(b)
Два вектора можно поменять местами, как показано в следующем фрагменте кода:
vector float > vtr1 < 1.1 , 2.2 , 3.3 , 4.4 >;
vector float > vtr2 < 10 , 20 >;
vtr1. swap ( vtr2 ) ;
cout «vtr1: « vtr1 [ ] » « vtr1 [ 1 ] »
« vtr1 [ 2 ] » « vtr1 [ 3 ] ‘ \n ‘ ;
cout «vtr2: « vtr2 [ ] » « vtr2 [ 1 ] »
« vtr2 [ 2 ] » « vtr2 [ 3 ] ‘ \n ‘ ;
Обратите внимание, что длина вектора при необходимости увеличивается. Кроме того, значения, для которых не было замен, заменяются некоторым значением по умолчанию.
clear()
Удаляет все элементы из вектора, как показано в следующем сегменте кода:
Операторы равенства и отношения для векторов
The == Operator
Возвращает 1 для истины, если два вектора имеют одинаковый размер и соответствующие элементы равны; в противном случае он возвращает 0 для ложного. Например:
vector int > U < 1 , 2 , 3 >;
vector int > V < 4 , 5 , 6 >;
bool bl = U == V ;
cout bl ‘ \n ‘ ;
The != Operator
Возвращает 1 для истины, если два вектора не имеют одинакового размера и / или соответствующие элементы не равны; в противном случае он возвращает 0 для ложного. Например:
vector int > U < 1 , 2 , 3 >;
vector int > V < 4 , 5 , 6 >;
bool bl = U != V ;
cout bl ‘ \n ‘ ;
The int > U < 3 , 1 , 1 >;
vector int > V < 3 , 2 , 1 >;
bool bl = U V ;
cout bl ‘ \n ‘ ;
Источник