В C++ Vector — это одномерная структура данных, которая динамически увеличивается в зависимости от требований. В этой структуре данных можно эффективно организовать данные (вставку/изменение/удаление). Его приложения включают следующее:
- Представление математических векторов в научных и инженерных приложениях
- С помощью этой структуры данных можно реализовать очереди, стеки и т. д.
Большинство распространенных операций и функций CRUD, связанных с этой структурой данных, подробно обсуждаются по сценариям с использованием синтаксиса и фрагментов кода.
Тема содержания:
- Вставка элемента в вектор
- Вставка нескольких элементов в вектор
- Доступ к элементам из вектора
- Обновите элемент в векторе
- Удалить определенный элемент из вектора
- Удалить все элементы из вектора
- Союз векторов
- Пересечение векторов
- Проверьте, пуст ли вектор или нет
- Обход вектора с помощью Const_Iterator
- Обход вектора с помощью Reverse_Iterator
- Вставьте элементы в вектор
- Выделение элементов из вектора
- Поменяйте векторы
- Получите первый элемент из вектора
- Получить последний элемент из вектора
- Присвойте новые значения вектору
- Расширьте вектор с помощью Emplace()
- Расширьте вектор с помощью Emplace_Back()
- Максимальный элемент вектора
- Минимальный элемент вектора
- Сумма элементов вектора
- Поэлементное умножение двух векторов
- Скалярное произведение двух векторов
- Преобразуйте набор в вектор
- Удалите повторяющиеся элементы
- Преобразуйте вектор в набор
- Удалить пустые строки
- Запись вектора в текстовый файл
- Создайте вектор из текстового файла
Вставка элемента в вектор
станд::вектор::вставка() Функция в C++ STL используется для вставки элементов в указанную позицию.
Синтаксис:
вектор. вставлять ( позиция, элемент ) ;Давайте воспользуемся этой функцией и передадим первую позицию в качестве параметра, указывающего позицию, в которую должен быть вставлен элемент, и предоставим элемент в качестве второго параметра.
Здесь можно использовать функцию Begin() для возврата итератора, указывающего на первый элемент входного вектора. Добавляя позицию к этой функции, элемент вставляется в эту позицию.
Давайте создадим вектор «student_names» типа string и вставим две строки в первую и вторую позиции, одну за другой, с помощью функции Insert().
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Инициализация вектора — Student_names
вектор < нить > имена_студентов ;
расчет << «Существующий вектор: \п ' ;
для ( авто я : имена_студентов ) расчет << я << конец ;
// Вставляем 'Шраван Кумар' в первую позицию
имена_студентов. вставлять ( имена_студентов. начинать ( ) + 0 , «Шраван Кумар» ) ;
// Вставляем 'Шраван Кумар' во вторую позицию
имена_студентов. вставлять ( имена_студентов. начинать ( ) + 1 , 'Лалита' ) ;
расчет << «Конечный вектор: \п ' ;
для ( авто дж : имена_студентов ) расчет << дж << конец ;
}
Выход:
Раньше вектор «student_names» был пустым. После вставки вектор содержит два элемента.
Вставка нескольких элементов в вектор
В этом сценарии мы используем ту же функцию, что и std::vector::insert(). Но нам нужно передать дополнительные/разные параметры в одну и ту же функцию, чтобы вставить несколько элементов в вектор.
Сценарий 1: вставка одного элемента несколько раз
В этом сценарии мы добавляем один и тот же элемент несколько раз.
Синтаксис:
вектор. вставлять ( положение, размер, элемент ) ;Для этого нам нужно передать размер в качестве второго параметра функции Insert(). Всего параметров, передаваемых в эту функцию, — три.
Здесь:
- Параметр позиции указывает позицию вставляемого элемента. Если размер больше 1, индексом начальной позиции будет позиция.
- Параметр size указывает, сколько раз должен быть вставлен элемент.
- Параметр element принимает элемент, который нужно вставить в вектор.
Рассмотрим вектор «student_names» с двумя строками. Вставьте струны «Лаванья» пять раз во вторую позицию.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Инициализация вектора — Student_names
вектор < нить > имена_студентов { «Шраван Кумар» , 'Лалита' } ;
расчет << «Существующий вектор: \п ' ;
для ( авто я : имена_студентов ) расчет << я << конец ;
// Вставляем 'Лаванью' во вторую позицию 5 раз
имена_студентов. вставлять ( имена_студентов. начинать ( ) + 1 , 5 , 'Лаванья' ) ;
расчет << ' \п Конечный вектор: \п ' ;
для ( авто дж : имена_студентов ) расчет << дж << конец ;
}
Выход:
В существующем векторе «Шраван Кумар» находится на первой позиции, а «Лалита» — на второй позиции. После пятикратного добавления «Лаванья» (со второй позиции на шестую) «Лалита» переместилась на седьмую позицию (последнюю).
Сценарий 2. Вставка нескольких элементов
В этом сценарии мы добавляем одновременно разные элементы из другого вектора. Здесь мы также используем ту же функцию, но синтаксис и параметры изменятся.
Синтаксис:
вектор. вставлять ( позиция, первый_итератор, второй_итератор ) ;Для этого нам нужно передать размер в качестве второго параметра функции Insert(). Всего параметров, передаваемых в эту функцию, — три.
Здесь:
- Параметр позиции указывает позицию вставляемого элемента.
- «first_iterator» указывает начальную позицию, из которой должны быть вставлены элементы (по сути, с помощью функции Begin() возвращается итератор, указывающий на первый элемент, присутствующий в контейнере).
- «Второй_итератор» указывает конечную позицию, до которой должны быть вставлены элементы (по сути, с помощью функции end() возвращается итератор, который указывает на последнюю точку, присутствующую в контейнере).
Создайте два вектора «marks1» и «marks2» целочисленного типа. Вставьте все элементы, присутствующие в векторе «marks2», в первую позицию вектора «marks1».
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Инициализация вектора — mark1
вектор < интервал > оценки1 { 100 , 89 , 90 , 78 , 98 } ;
расчет << «Первый вектор: \п ' ;
для ( авто я : оценки1 ) расчет << я << конец ;
// Инициализация вектора — mark2
вектор < интервал > отметки2 { 56 , Четыре пять , 65 } ;
расчет << «Второй вектор: \п ' ;
для ( авто дж : отметки2 ) расчет << дж << конец ;
отметки1. вставлять ( начинать ( оценки1 ) , начинать ( отметки2 ) , конец ( отметки2 ) ) ;
// Конечный вектор
расчет << «Перво-финальный вектор: \п ' ;
для ( авто Икс : оценки1 )
расчет << Икс << ' ' ;
}
Выход:
Первый вектор (marks1) содержит пять элементов, а второй вектор (marks2) — три элемента. Мы передали параметры Begin (marks1), Begin(marks2), End(marks2) функции «insert», чтобы все элементы, присутствующие во втором векторе, повторялись и вставлялись в первый вектор в начале. Итак, первый вектор содержит восемь элементов.
Доступ к элементам из вектора
1. Использование оператора []
В некоторых сценариях может потребоваться вернуть только определенные элементы вектора. Возвращать все элементы не требуется. Таким образом, чтобы вернуть только определенные элементы на основе индекса, используются оператор индекса и функции at().
Синтаксис:
вектор [ индекс_позиция ]В C++ индексация начинается с 0 для любой структуры данных. Если элемент не существует, он возвращает пустое значение (ошибок или предупреждений не возникает).
Рассмотрим вектор «продукты» с пятью элементами. Доступ ко всем элементам один за другим, используя позицию индекса.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
//Доступ к элементам из товаров
расчет << «Первый элемент:» << продукты [ 0 ] << конец ;
расчет << «Второй элемент:» << продукты [ 1 ] << конец ;
расчет << «Третий элемент:» << продукты [ 2 ] << конец ;
расчет << «Четвертый элемент:» << продукты [ 3 ] << конец ;
расчет << «Пятый элемент:» << продукты [ 4 ] << конец ;
// Пытаемся получить доступ к 9-му элементу
расчет << «Девятый элемент:» << продукты [ 8 ] << конец ;
}
Выход:
Элемента с индексом 8 нет. Поэтому возвращается пустое значение.
2. Использование функции At()
At() — это функция-член, которая аналогична предыдущему варианту использования, но возвращает исключение «std::out_of_range», когда ей предоставляется индекс вне диапазона.
Синтаксис:
вектор. в ( индекс_позиция )Нам нужно передать позицию индекса в эту функцию.
Рассмотрим вектор «продукты» с пятью элементами. Получите доступ ко всем элементам один за другим, используя позицию индекса, и попытайтесь получить доступ к элементу, который присутствует в 9-й позиции.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
//Доступ к элементам из товаров
расчет << «Первый элемент:» << продукты. в ( 0 ) << конец ;
расчет << «Второй элемент:» << продукты. в ( 1 ) << конец ;
расчет << «Третий элемент:» << продукты. в ( 2 ) << конец ;
расчет << «Четвертый элемент:» << продукты. в ( 3 ) << конец ;
расчет << «Пятый элемент:» << продукты. в ( 4 ) << конец ;
//Доступ к элементам, которых нет в векторе
расчет << «Девятый элемент:» << продукты. в ( 8 ) << конец ;
}
Выход:
Возникает ошибка при доступе к 9-му элементу:
завершить вызов после создания экземпляра 'std::out_of_range'что ( ) : вектор :: _M_range_check : __н ( который 8 ) >= этот - > размер ( ) ( который 5 )
Обновить элемент в векторе
1. Использование оператора []
Используя позицию индекса, мы можем обновить элемент в векторе. Оператор [] принимает позицию индекса элемента, который необходимо обновить. Новый элемент будет присвоен этому оператору.
Синтаксис:
Вектор [ индекс_позиция ] '=' ЭлементРассмотрим вектор «student_marks» с пятью значениями. Обновите элементы, присутствующие в индексах 1 и 3.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — Student_marks
вектор < интервал > студент_марки { 98 , 78 , 90 , 67 , 89 } ;
расчет << 'Существующие отметки: ' << конец ;
для ( интервал итр : студент_марки )
расчет << итр << конец ;
// Обновляем элемент с индексом-3 на 100
студент_марки [ 3 ] '=' 100 ;
// Обновляем элемент с индексом-1 на 60
студент_марки [ 1 ] '=' 60 ;
расчет << «Итоговые оценки:» << конец ;
для ( интервал итр : студент_марки )
расчет << итр << конец ;
}
Выход:
Мы видим, что последний вектор содержит элементы обновления с индексами 1 и 3.
2. Использование функции At()
Подобно оператору индекса, at() по сути является функцией-членом, которая обновляет значение на основе индекса в итераторе. Если индекс, указанный внутри этой функции, не существует, выдается исключение «std::out_of_range».
вектор. в ( индекс_позиция ) '=' ЭлементРассмотрим вектор «продукты» с пятью элементами. Обновите все элементы, присутствующие в векторе, другими элементами.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
расчет << «Существующие продукты: » << конец ;
для ( строка итр : продукты )
расчет << итр << конец ;
//Обновляем все строки
продукты. в ( 0 ) '=' 'Торт' ;
продукты. в ( 1 ) '=' 'Шоколад' ;
продукты. в ( 2 ) '=' 'Фрукты' ;
продукты. в ( 3 ) '=' 'Лук' ;
продукты. в ( 4 ) '=' 'Безалкогольные напитки' ;
расчет << ' \п Конечная продукция: ' << конец ;
для ( строка итр : продукты )
расчет << итр << конец ;
}
Выход:
Удалить определенный элемент из вектора
В С++ std::vector::erase() Функция используется для удаления определенного элемента/диапазона элементов из вектора. Элементы удаляются в зависимости от позиции итератора.
Синтаксис:
вектор. стереть ( позиция итератора )Давайте посмотрим синтаксис удаления определенного элемента из вектора. Мы можем использовать функции Begin() или End(), чтобы получить позицию элемента, присутствующего в векторе, который нужно удалить.
Рассмотрим вектор «продукты» с пятью элементами.
- Удалите третий элемент, указав итератор Begin(). Begin() указывает на первый элемент вектора. Если мы добавим два к этой функции, она укажет на третий элемент.
- Удалите последний элемент, указав итератор end(). End() указывает на последний элемент вектора.
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
расчет << «Существующие продукты: » << конец ;
для ( строка итр : продукты )
расчет << итр << конец ;
// Удалить третий элемент
продукты. стереть ( продукты. начинать ( ) + 2 ) ;
расчет << ' \п После удаления третьего элемента: \п ' ;
для ( строка итр : продукты )
расчет << итр << конец ;
// Удалить последний элемент
продукты. стереть ( продукты. конец ( ) ) ;
расчет << ' \п После удаления последнего элемента: \п ' ;
для ( строка итр : продукты )
расчет << итр << конец ;
}
Выход:
Теперь в векторе «продукты» существуют только три элемента («мыло», «шампунь», «фрукты»).
Удалить все элементы из вектора
Сценарий 1. Удаление диапазона элементов из вектора
Давайте воспользуемся функцией std::vector::erase() для удаления нескольких элементов в диапазоне.
Синтаксис:
вектор. стереть ( первый итератор, последний итератор )Два итератора (begin() указывает на первый элемент, а end() указывает на функции последнего элемента) используются для указания диапазона.
Рассмотрим вектор «продукты» с пятью элементами и удалите все элементы из второй позиции. Для этого первый итератор имеет значение Begin (продукты)+1, указывающий на второй элемент, а второй итератор — Конец (продукты).
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
расчет << «Существующие продукты: » << конец ;
для ( строка итр : продукты )
расчет << итр << конец ;
// Удаляем все элементы со второй позиции
продукты. стереть ( начинать ( продукты ) + 1 ,конец ( продукты ) ) ;
расчет << ' \п Конечные продукты: \п ' ;
для ( строка итр : продукты )
расчет << итр << конец ;
}
Выход:
Теперь в векторе «продукты» присутствует только один элемент («мыло»).
Сценарий 2. Удаление всех элементов из вектора
Давайте использовать станд::вектор::очистить() функция для удаления всех элементов из вектора.
Синтаксис:
вектор. прозрачный ( )В эту функцию не передаются никакие параметры.
Рассмотрим тот же вектор, который использовался в первом сценарии, и удалите все элементы с помощью функцииclear().
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - продукты с 5 строками
вектор < нить > продукты { 'мыло' , 'шампунь' , 'масло' , 'фрукты' , 'овощи' } ;
расчет << «Существующие продукты: » << конец ;
для ( строка итр : продукты )
расчет << итр << конец ;
// Удаляем все элементы из товаров
продукты. прозрачный ( ) ;
расчет << ' \п Конечные продукты: \п ' ;
для ( строка итр : продукты )
расчет << итр << конец ;
}
Выход:
Мы видим, что в векторе «продукты» нет элементов.
Союз векторов
Выполнить операцию UNION над векторами можно с помощью функции std::set_union(). Union возвращает уникальные элементы из векторов, игнорируя повторяющиеся элементы. Нам нужно передать оба итератора в эту функцию. Наряду с этим необходимо передать выходной итератор, который сохранит результат, возвращаемый обоими итераторами.
Синтаксис:
set_union ( ВходнойИтератор1 первый1, ВходнойИтератор1 последний1, ВходнойИтератор2 первый2, ВходнойИтератор2 последний2, ВыходнойИтератор рез. ) ;Здесь:
- «first1» указывает на первый элемент первого итератора (вектора).
- «last1» указывает на последний элемент первого итератора (вектора).
- «first2» указывает на первый элемент второго итератора (вектора).
- «last2» указывает на последний элемент второго итератора (вектора).
Создайте два вектора — «subjects1» и «subjects2» — целочисленного типа.
- Отсортируйте два вектора с помощью функции sort(), передав итераторы.
- Создайте выходной вектор (итератор).
- Найдите объединение этих двух векторов, используя функцию std::set_union(). Используйте Begin() в качестве первого итератора и End() в качестве последнего итератора.
- Выполните итерацию выходного вектора, чтобы отобразить элементы, возвращаемые функцией.
#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - mark1
вектор < интервал > оценки1 '=' { 100 , 90 , 80 , 70 , 60 } ;
// Создаем вектор - mark2
вектор < интервал > отметки2 '=' { 80 , 90 , 60 , 70 , 100 } ;
// Сортируем оба вектора
Сортировать ( отметки1. начинать ( ) , отметки1. конец ( ) ) ;
Сортировать ( отметки2. начинать ( ) , отметки2. конец ( ) ) ;
вектор < интервал > выходной вектор ( отметки1. размер ( ) + отметки2. размер ( ) ) ;
вектор < интервал > :: итератор является ;
я '=' set_union ( отметки1. начинать ( ) , отметки1. конец ( ) ,
отметки2. начинать ( ) , отметки2. конец ( ) ,
выходной вектор. начинать ( ) ) ;
расчет << ' \п отметки1 U отметки2: \п ' ;
для ( с '=' выходной вектор. начинать ( ) ; с ! '=' я ; ++ с )
расчет << * с << ' ' << ' \п ' ;
}
Выход:
В обоих векторах (субъекты1 и субъекты2) всего пять уникальных элементов.
Пересечение векторов
Найти пересечение двух векторов можно с помощью функции std::set_intersection(). Пересечение возвращает элементы, присутствующие в обоих векторах.
Синтаксис:
set_intersection ( ВходнойИтератор1 первый1, ВходнойИтератор1 последний1, ВходнойИтератор2 первый2, ВходнойИтератор2 последний2, ВыходнойИтератор рез. ) ;Параметры, передаваемые в функцию set_union(), также могут быть переданы в эту функцию set_intersection().
Создайте два вектора — «subjects1» и «subjects2» — целочисленного типа.
- Отсортируйте два вектора с помощью функции sort(), передав итераторы.
- Создайте выходной вектор (итератор).
- Найдите пересечение этих двух векторов, используя функцию std::set_intersection(). Используйте Begin() в качестве первого итератора и End() в качестве последнего итератора.
- Выполните итерацию выходного вектора, чтобы отобразить элементы, возвращаемые функцией.
#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - mark1
вектор < интервал > оценки1 '=' { 100 , 10 , 80 , 40 , 60 } ;
// Создаем вектор - mark2
вектор < интервал > отметки2 '=' { пятьдесят , 90 , 60 , 10 , 100 } ;
// Сортируем оба вектора
Сортировать ( отметки1. начинать ( ) , отметки1. конец ( ) ) ;
Сортировать ( отметки2. начинать ( ) , отметки2. конец ( ) ) ;
вектор < интервал > выходной вектор ( отметки1. размер ( ) + отметки2. размер ( ) ) ;
вектор < интервал > :: итератор является ;
я '=' set_intersection ( отметки1. начинать ( ) , отметки1. конец ( ) ,
отметки2. начинать ( ) , отметки2. конец ( ) ,
выходной вектор. начинать ( ) ) ;
расчет << ' \п отметки1 ∩ отметки2: \п ' ;
для ( с '=' выходной вектор. начинать ( ) ; с ! '=' я ; ++ с )
расчет << * с << ' ' << ' \п ' ;
}
Выход:
В обоих векторах присутствуют только три элемента (субъекты1 и субъекты2).
Проверьте, пуст ли вектор или нет
Прежде чем работать с векторами, важно проверить, пуст ли вектор или нет. В проектах программного обеспечения также рекомендуется проверять, пуст ли вектор или нет, прежде чем выполнять такие операции, как операции CRUD и т. д.
1. Использование Std::vector::empty()
Эта функция возвращает 1, если вектор пуст (не содержит ни одного элемента). В противном случае возвращается 0. В эту функцию не передаются никакие параметры.
2. Использование Std::vector::size()
Функция std::vector::size() возвращает целое число, которое представляет общее количество элементов, присутствующих в векторе.
Создайте два вектора – «колледж1» и «колледж2». «Колледж1» содержит пять элементов, а «колледж2» пуст. Примените обе функции к обоим векторам и проверьте результат.
#include <алгоритм>#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - College1
вектор < нить > колледж1 '=' { 'колледж-А' , «колледж-Б» , 'колледж-С' , 'колледж-Д' , 'колледж-Э' } ;
// Создаем вектор - College2
вектор < нить > колледж2 ;
// пустой()
расчет << колледж1. пустой ( ) << конец ;
расчет << колледж2. пустой ( ) << конец ;
// размер()
расчет << колледж1. размер ( ) << конец ;
расчет << колледж2. размер ( ) << конец ;
}
Выход:
Функция пустой() возвращает 0 для «колледжа1» и 1 для «колледжа2». Функция size() возвращает пять для «колледжа1» и 0 для «колледжа2».
Обход вектора с помощью Const_Iterator
Когда вы работаете с контейнерами C++, такими как наборы, векторы и т. д., можно перебирать все элементы, присутствующие в контейнере, не изменяя их. const_iterator является одним из итераторов, реализующих этот сценарий. cbegin() (указывает на первый элемент вектора) и cend() (указывает на последний элемент вектора) — это две функции, предоставляемые каждым контейнером, которые используются для возврата постоянного итератора в начало и конец контейнер. При итерации вектора мы можем использовать эти две функции.
- Давайте создадим вектор с именем «отделы» из пяти строк.
- Объявите const_iterator – ctr типа
. - Перейдите по отделам, используя предыдущий итератор, используя цикл «for», и отобразите его.
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - отделы
вектор < нить > отделы '=' { 'Продажи' , 'Услуга' ,
'HR' , 'ЭТО' , «Другие» } ;
вектор < нить > :: const_iterator ctr ;
// Перебираем отделы, используя const_iterator - ctr.
для ( ctr '=' отделы. cbegin ( ) ; ctr ! '=' отделы. немного ( ) ; ctr ++ ) {
расчет << * ctr << конец ;
}
}
Выход:
Обход вектора с помощью Reverse_Iterator
обратный_итератор также является итератором, похожим на const_iterator, но возвращает элементы в обратном порядке. rbegin() (указывает на последний элемент вектора) и rend() (указывает на первый элемент вектора) — это две функции, предоставляемые каждым контейнером, которые используются для возврата постоянного итератора в конец и начало контейнер.
- Давайте создадим вектор с именем «отделы» из пяти строк.
- Объявите обратный_итератор — rtr типа <строка>.
- Перейдите по отделам, используя предыдущий итератор, используя цикл «for», и отобразите его.
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - отделы
вектор < нить > отделы '=' { 'Продажи' , 'Услуга' ,
'HR' , 'ЭТО' , «Другие» } ;
вектор < нить > :: обратный_итератор ртр ;
// Перебираем отделы, используяverse_iterator - rtr.
для ( ртр '=' отделы. начать ( ) ; ртр ! '=' отделы. делает ( ) ; ртр ++ ) {
расчет << * ртр << конец ;
}
}
Выход:
Вставьте элементы в вектор
Вставка или добавление элементов в вектор — это односторонняя вставка, которую можно выполнить с помощью вектор::push_back() функция.
Синтаксис:
вектор. отталкивать ( элемент )В качестве параметра требуется элемент, который нужно поместить в вектор.
Давайте создадим пустой вектор с именем «отделы» из пяти строк и отправим две строки одну за другой с помощью функции push_back().
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Инициализируем вектор - отделы
вектор < нить > отделы ;
расчет << «Фактические отделы:» << конец ;
для ( авто итр '=' отделы. начинать ( ) ; итр ! '=' отделы. конец ( ) ; ++ итр )
расчет << * итр << конец ;
// Нажимаем «Продажи»
отделы. отталкивать ( 'Продажи' ) ;
// Нажимаем «ИТ»
отделы. отталкивать ( 'ЭТО' ) ;
расчет << ' \п Последние отделы:' << конец ;
для ( авто итр '=' отделы. начинать ( ) ; итр ! '=' отделы. конец ( ) ; ++ итр )
расчет << * итр << конец ;
}
Выход:
Сначала нажимаем «Продажи». После этого «ИТ» заталкивается в вектор. Теперь вектор «отделы» содержит два элемента.
Выделение элементов из вектора
Если вы хотите удалить последний элемент, присутствующий в векторе, используя вектор::pop_back() функция — лучший подход. Он удаляет последний элемент, присутствующий в векторе.
Синтаксис:
вектор. pop_back ( )Для этой функции не требуется никаких параметров. Он показывает неопределенное поведение, если мы попытаемся удалить последний элемент из пустого вектора.
Давайте создадим пустой вектор с именем «отделы» из пяти строк и удалим последний элемент, используя предыдущую функцию. Отобразите вектор в обоих случаях.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Инициализируем вектор - отделы
вектор < нить > отделы '=' { 'Продажи' , 'ЭТО' , 'Услуга' , 'Маркетинг' , 'HR' } ;
расчет << «Фактические отделы:» << конец ;
для ( авто итр '=' отделы. начинать ( ) ; итр ! '=' отделы. конец ( ) ; ++ итр )
расчет << * итр << конец ;
// Удаляем последний элемент
отделы. pop_back ( ) ;
расчет << ' \п Последние отделы:' << конец ;
для ( авто итр '=' отделы. начинать ( ) ; итр ! '=' отделы. конец ( ) ; ++ итр )
расчет << * итр << конец ;
}
Выход:
«HR» — последний элемент, который присутствует в векторе «отделы». Таким образом, он удаляется из вектора, и в конечном векторе остаются «Продажи», «ИТ», «Сервис» и «Маркетинг».
Поменяйте векторы
вектор::своп() Функция в C++ STL используется для замены всех элементов, присутствующих в двух векторах.
Синтаксис:
первый_вектор. менять ( второй_вектор )Он не учитывает размер векторов, но векторы должны быть одного типа (если типы векторов разные), выдается ошибка.
Создадим два вектора — «фрукты» и «овощи» — строкового типа разных размеров. Поменяйте местами каждый из них и отобразите векторы в обоих случаях.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Инициализируем вектор - фрукты
вектор < нить > фрукты '=' { 'Яблоко' , 'Манго' } ;
расчет << «Настоящие фрукты:» << конец ;
для ( авто итр '=' фрукты. начинать ( ) ; итр ! '=' фрукты. конец ( ) ; ++ итр )
расчет << * итр << конец ;
// Инициализируем вектор - овощи
вектор < нить > овощи '=' { 'Картофель' , 'Помидор' , 'Бринджал' } ;
расчет << ' \п Настоящие овощи:' << конец ;
для ( авто итр '=' овощи. начинать ( ) ; итр ! '=' овощи. конец ( ) ; ++ итр )
расчет << * итр << конец ;
// Меняем местами элементы в обоих векторах
фрукты. менять ( овощи ) ;
расчет << ' \п Фрукты после замены:' << конец ;
для ( авто итр '=' фрукты. начинать ( ) ; итр ! '=' фрукты. конец ( ) ; ++ итр )
расчет << * итр << конец ;
расчет << ' \п Овощи после замены:' << конец ;
для ( авто итр '=' овощи. начинать ( ) ; итр ! '=' овощи. конец ( ) ; ++ итр )
расчет << * итр << конец ;
}
Выход:
Раньше вектор «фрукты» содержал два элемента, а вектор «овощи» — три элемента. После замены вектор «фрукты» содержит три элемента, а вектор «овощи» — два элемента.
Получите первый элемент из вектора
В некоторых случаях требуется вернуть только первый элемент вектора. Функция Vector::front() в C++ STL извлекает только первый элемент вектора.
Синтаксис:
вектор. передний ( )Эта функция не будет принимать никаких параметров. Если вектор пуст, выдается ошибка.
Давайте создадим два вектора — «фрукты» и «овощи» — строкового типа и попробуем получить первый элемент отдельно от двух векторов.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — фрукты из 2 элементов
вектор < нить > фрукты '=' { 'Яблоко' , 'Манго' } ;
// Возвращаем первый элемент
расчет << фрукты. передний ( ) << конец ;
// Инициализируем вектор - овощи
вектор < нить > овощи ;
// Пытаемся вернуть первый элемент
расчет << овощи. передний ( ) ;
}
Выход:
«Яблоко» — первый элемент, который присутствует в векторе «фрукты». Итак, оно возвращено. Но когда мы пытаемся получить первый элемент из вектора «овощи», выдается ошибка, поскольку он пуст.
Получить последний элемент из вектора
Функция вектора::end() в C++ STL извлекает только последний элемент вектора.
Синтаксис:
вектор. назад ( )Эта функция не будет принимать никаких параметров. Если вектор пуст, выдается ошибка.
Давайте создадим два вектора — «фрукты» и «овощи» — строкового типа и попробуем извлечь последний элемент отдельно из двух векторов.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — фрукты из 2 элементов
вектор < нить > фрукты '=' { 'Яблоко' , 'Манго' } ;
// Извлекаем последний элемент
расчет << фрукты. назад ( ) << конец ;
// Инициализируем вектор - овощи
вектор < нить > овощи ;
// Пытаемся получить последний элемент
расчет << овощи. назад ( ) ;
}
Выход:
«Манго» — последний элемент, присутствующий в векторе «фрукты». Итак, оно возвращено. Но когда мы пытаемся получить последний элемент из вектора «овощи», выдается ошибка, поскольку он пуст.
Присвойте новые значения вектору
В некоторых сценариях, если вы хотите обновить все значения новым значением или создать вектор с теми же значениями, лучшим подходом будет использование функции Vector::assign(). Используя эту функцию, мы можем:
- Создайте вектор со всеми похожими элементами.
- Измените существующий вектор тем же элементом.
Синтаксис:
вектор. назначать ( размер, стоимость )Для этой функции требуются два параметра.
Здесь:
- Размер определяет количество назначаемых элементов.
- Значение указывает назначаемый элемент.
Давайте создадим вектор с именем «marks1» с пятью значениями и обновим этот вектор четырьмя элементами так, чтобы все элементы в обновленном векторе были равны 20.
#include <алгоритм>#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - mark1
вектор < интервал > оценки1 '=' { 100 , 90 , 80 , 70 , 60 } ;
расчет << «Фактический вектор:» << конец ;
для ( интервал я '=' 0 ; я < отметки1. размер ( ) ; я ++ )
расчет << оценки1 [ я ] << конец ;
отметки1. назначать ( 4 , двадцать ) ;
расчет << ' \п Обновленный вектор:' << конец ;
для ( интервал я '=' 0 ; я < отметки1. размер ( ) ; я ++ )
расчет << оценки1 [ я ] << конец ;
}
Выход:
Раньше вектор содержал пять разных элементов. Теперь он содержит только четыре элемента, и все они равны 20.
Расширьте вектор с помощью Emplace()
Мы уже знаем, что новые элементы динамически вставляются в любую позицию вектора. Это возможно с помощью функции Vector::emplace(). Давайте быстро рассмотрим синтаксис и параметры, принимаемые этой функцией.
Синтаксис:
вектор. расположение ( const_iterator позиция, элемент )В эту функцию передаются два обязательных параметра.
Здесь:
- Первый параметр принимает позицию, чтобы мы могли вставить элемент в любую позицию. Мы можем получить позицию, используя функцию итератора Begin() или End().
- Второй параметр — это элемент, который нужно вставить в вектор.
Рассмотрим вектор «химических веществ» с двумя элементами.
- Вставьте «Марганец» в первую позицию – начало (химические вещества)
- Вставьте «Медь» в последнюю позицию – конец (химические вещества)
- Вставьте «Сера» в третью позицию – начало (химические вещества)+2.
#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - химикаты
вектор < нить > химикаты '=' { «Кислород» , 'КО' } ;
расчет << «Настоящие химикаты:» << конец ;
для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )
расчет << химикаты [ я ] << конец ;
// Вставляем элемент в первую позицию
химикаты. расположение ( начинать ( химикаты ) , «Марганец» ) ;
// Вставляем элемент в последнюю позицию
химикаты. расположение ( конец ( химикаты ) , 'Медь' ) ;
// Вставляем элемент в третью позицию
химикаты. расположение ( начинать ( химикаты ) + 2 , «Сера» ) ;
расчет << ' \п Последние химикаты:' << конец ;
для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )
расчет << химикаты [ я ] << конец ;
}
Выход:
Теперь последний вектор содержит пять элементов (представленных на следующем снимке экрана).
Расширьте вектор с помощью Emplace_Back()
Элемент можно добавить (добавив в конец вектора), что можно сделать с помощью вектор::emplace_back() функция.
Синтаксис:
вектор. emplace_back ( элемент )Обязательно необходимо передать элемент, добавляемый к вектору, в качестве параметра.
Давайте добавим два элемента один за другим, используя функцию emplace_back().
#include <алгоритм>#include
#include <вектор>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаем вектор - химикаты
вектор < нить > химикаты '=' { «Кислород» , 'КО' } ;
расчет << «Настоящие химикаты:» << конец ;
для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )
расчет << химикаты [ я ] << конец ;
// Вставляем марганец в конец вектора
химикаты. emplace_back ( «Марганец» ) ;
// Вставляем марганец в конец вектора
химикаты. emplace_back ( 'Медь' ) ;
расчет << ' \п Последние химикаты:' << конец ;
для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )
расчет << химикаты [ я ] << конец ;
}
Выход:
Теперь последний вектор содержит четыре элемента после добавления «Марганца» и «Меди».
Максимальный элемент вектора
- Создайте вектор с несколькими элементами.
- Чтобы найти максимальный элемент, присутствующий в векторе, используйте функцию *max_element(), которая принимает в качестве аргументов два итератора. Эти два параметра действуют как диапазон, и максимальный элемент возвращается в пределах предоставленного диапазона. Начальная позиция — начало(), а последняя позиция — конец().
Давайте рассмотрим вектор с именем «item_costs», который содержит пять значений целочисленного типа и возвращает максимальный элемент.
#include <вектор>#include
#include <алгоритм>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — item_costs
вектор < интервал > item_costs '=' { 8900 , 5677 , 200 , 1000 , 2300 } ;
расчет << «Стоимость предметов: \п ' ;
для ( интервал я '=' 0 ; я < item_costs. размер ( ) ; я ++ )
расчет << item_costs [ я ] << конец ;
// Возвращаем максимальный элемент из указанного выше вектора — item_costs
расчет << ' \п Максимальная стоимость: ' << * max_element ( начинать ( item_costs ) ,конец ( item_costs ) ) ;
}
Выход:
Здесь 8900 — это максимальный элемент среди всех элементов, присутствующих в векторе «item_costs».
Минимальный элемент вектора
- Создайте вектор с несколькими элементами.
- Чтобы найти минимальный элемент, присутствующий в векторе, используйте функцию *min_element(), которая принимает в качестве аргументов два итератора. Эти два параметра действуют как диапазон, и минимальный элемент (меньше, чем все остальные элементы) возвращается в пределах предоставленного диапазона. Начальная позиция — начало(), а последняя позиция — конец().
Используйте тот же вектор, который создан для поиска максимального элемента, и найдите минимальный элемент с помощью функции *min_element().
#include <вектор>#include
#include <алгоритм>
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — item_costs
вектор < интервал > item_costs '=' { 8900 , 5677 , 200 , 1000 , 2300 } ;
расчет << «Стоимость предметов: \п ' ;
для ( интервал я '=' 0 ; я < item_costs. размер ( ) ; я ++ )
расчет << item_costs [ я ] << конец ;
// Возвращаем минимальный элемент из приведенного выше вектора — item_costs
расчет << ' \п Минимальная стоимость: ' << * min_element ( начинать ( item_costs ) ,конец ( item_costs ) ) ;
}
Выход:
Здесь 200 — это минимальный элемент среди всех элементов, присутствующих в векторе «item_costs».
Сумма элементов вектора
Чтобы вернуть сумму всех элементов, присутствующих в векторе, необходимо накапливать() используется функция в C++ STL. Он принимает три параметра. Первый параметр принимает первый индекс, представляющий начальный элемент в диапазоне (укажите итератор Begin()), а второй параметр принимает последний индекс, представляющий конечный элемент в диапазоне (укажите итератор end()). Наконец, нам нужно передать начальное значение суммы (в нашем случае это 0).
накапливать ( первый_индекс, последний_индекс, начальное_значение ) ;Создайте вектор с именем «item_costs» из пяти элементов целочисленного типа и вычислите сумму.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — item_costs
вектор < интервал > item_costs '=' { 8900 , 5677 , 200 , 1000 , 2300 } ;
расчет << «Стоимость предметов: \п ' ;
для ( интервал я '=' 0 ; я < item_costs. размер ( ) ; я ++ )
расчет << item_costs [ я ] << конец ;
// Возвращаем сумму всех элементов в векторе выше — item_costs
расчет << ' \п Общая стоимость: ' << накапливать ( начинать ( item_costs ) ,конец ( item_costs ) , 0 ) ;
}
Выход:
Сумма 8900, 5677, 200, 1000, 2300 равна 18077.
Поэлементное умножение двух векторов
- Создайте два вектора числового типа, причем два вектора должны быть одинакового размера (общее количество элементов, присутствующих в первом векторе, = общее количество элементов, присутствующих во втором векторе).
- Объявите новый вектор и используйте для цикла , выполните операцию умножения двух элементов на каждой итерации и сохраните значение в созданный вектор с помощью функции push_back(). для ( интервал итр '=' 0 ; я < first_vec. размер ( ) ; итр ++ )
- Отобразите элементы, присутствующие в результирующем векторе, путем его итерации.
{
результат_вектор. отталкивать ( first_vec [ итр ] * сек_вещь [ итр ] ) ;
}
Создайте вектор с именем «item_costs» из пяти элементов целочисленного типа и вычислите сумму.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём два вектора — Products1 и Products2 по 5 элементов в каждом
вектор < интервал > продукты1 '=' { 10 , двадцать , 30 , 40 , пятьдесят } ;
вектор < интервал > продукты2 '=' { пятьдесят , 40 , 30 , 70 , 60 } ;
вектор < интервал > результат_продукты ;
// Выполняем поэлементное умножение
для ( интервал я '=' 0 ; я < продукты1. размер ( ) ; я ++ ) {
result_products. отталкивать ( продукты1 [ я ] * продукты2 [ я ] ) ;
}
// Отображение результирующего вектора
расчет << «Векторное умножение: \п ' ;
для ( интервал рез : результат_продукты )
расчет << рез << конец ;
}
Выход:
Итерация - 1 : 10 * пятьдесят => 500Итерация - 2 : двадцать * 40 => 800
Итерация - 3 : 30 * 30 => 900
Итерация - 4 : 40 * 70 => 2800
Итерация - 5 : пятьдесят * 60 => 3000
Скалярное произведение двух векторов
В случае векторов C++ скалярное произведение определяется как «сумма произведений соответствующих записей двух последовательностей векторов».
Синтаксис:
внутренний продукт ( Сначала Vector1, потом Vector1, сначала Vector2, Initial_Val )Используйте функцию Internal_product() для возврата скалярного произведения. Эта функция принимает четыре обязательных параметра.
Здесь:
- Первый параметр относится к итератору, указывающему на начало первого вектора (укажите с помощью функции Begin()).
- Второй параметр относится к итератору, указывающему на конец первого вектора (задайте его с помощью функции end()).
- Третий параметр относится к итератору, указывающему на начало второго вектора (задайте его с помощью функции Begin()).
- Начальное значение должно быть передано в качестве последнего параметра, который является целым числом для накопления скалярного произведения.
Используйте ту же программу, которая создана для умножения двух векторов, и используйте функцию innsr_product(), чтобы найти скалярное произведение двух векторов.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём два вектора — Products1 и Products2 по 5 элементов в каждом
вектор < интервал > продукты1 '=' { 10 , двадцать , 30 , 40 , пятьдесят } ;
вектор < интервал > продукты2 '=' { пятьдесят , 40 , 30 , 70 , 60 } ;
// Отображение результирующего вектора
расчет << 'Скалярное произведение продуктов1 и продуктов2: ' ;
расчет << внутренний продукт ( начинать ( продукты1 ) ,конец ( продукты1 ) ,начинать ( продукты2 ) , 0 ) ;
}
Выход:
( 10 * пятьдесят ) + ( двадцать * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( пятьдесят * 60 )=> 500 + 800 + 900 + 2800 + 3000
=> 8000
Преобразуйте набор в вектор
Существует много способов преобразовать набор в вектор, передав все элементы набора в вектор. Самый лучший и простой способ — использовать функцию std::copy().
Синтаксис
стандартный :: копировать ( SourceIterator первым, SourceIterator последним, DestinationIterator первым )Использовать станд::копировать() функция, которая вставляет элементы из набора в вектор. Требуется три параметра.
Здесь:
- Первый параметр относится к исходному итератору, который указывает на первый элемент итератора. Здесь set — это исходный итератор, указанный с помощью функции Begin().
- Аналогично, второй параметр указывает на последний элемент (функция end()).
- Третий параметр относится к целевому итератору, который указывает на первый элемент (указанный с помощью функции Begin()) в итераторе.
Давайте создадим набор из пяти учеников и скопируем все элементы в вектор, используя предыдущую функцию.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём набор — ученики из 5 элементов
набор < нить > студенты '=' { 'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' } ;
расчет << 'Набор: \п ' ;
для ( строка я : студенты )
расчет << я << конец ;
// Создаем вектор - размер Student_vcof равен размеру набора
вектор < нить > студент_vc ( студенты. размер ( ) ) ;
// Вставляем элементы из набора — студенты в вектор — Student_vc.
копировать ( студенты. начинать ( ) , студенты. конец ( ) , Student_VC. начинать ( ) ) ;
расчет << ' \п Вектор: \п ' ;
для ( строка я : студент_vc )
расчет << я << конец ;
}
Выход:
Теперь все элементы, присутствующие в наборе «Студенты», копируются в вектор «students_vc».
Удалите повторяющиеся элементы
- Во-первых, нам нужно отсортировать элементы вектора так, чтобы все повторяющиеся элементы были соседними друг с другом, используя метод станд::сорт() функция. стандартный :: Сортировать ( Вектор первый, Вектор последний ) ;
- Используйте функцию std::unique(), чтобы выбрать повторяющиеся элементы. В то же время используйте функцию Erase() для удаления дубликатов, возвращаемых функцией std::unique(). Порядок элементов в конечном векторе может измениться. вектор. стереть ( стандартный :: уникальный ( Вектор первый, Вектор последний ) , Вектор последний ) )
Создайте вектор «студенты» из 10 элементов и верните вектор, удалив дубликаты.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — студенты с 10 элементами
вектор < нить > студенты '=' { 'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' ,
'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' } ;
расчет << 'Студенты: \п ' ;
для ( строка я : студенты )
расчет << я << ' ' ;
// Сортируем все элементы вектора студентов.
Сортировать ( начинать ( студенты ) , конец ( студенты ) ) ;
// Используйте функцию unique() для удаления дубликатов с помощью функции Erase()
студенты. стереть ( уникальный ( начинать ( студенты ) , конец ( студенты ) ) , конец ( студенты ) ) ;
расчет << ' \п \п Уникальные студенты: \п ' ;
для ( авто итр '=' cbegin ( студенты ) ; итр ! '=' немного ( студенты ) ; ++ итр ) {
расчет << * итр << ' ' ;
}
}
Выход:
Теперь все элементы в векторе уникальны.
Преобразуйте вектор в набор
Set не допускает дублирования элементов. Если вы вводите текст для вставки вектора в набор с дубликатами, они будут игнорироваться. Мы используем ту же функцию std::copy(), которая использовалась в предыдущем сценарии, которая преобразовывала набор в вектор.
В этом сценарии:
- Первый параметр принимает вектор в качестве исходного итератора, заданного с помощью функции Begin().
- Второй параметр принимает вектор в качестве исходного итератора, указанного с помощью функции end().
- Передайте функцию std::inserter(), которая используется для автоматической перезаписи/копирования элементов в определенной позиции в наборе, предоставляя набор и итератор, указывающие на конец набора, в качестве параметров.
Давайте создадим вектор из 10 целых чисел и скопируем элементы в набор.
#includeс использованием пространство имен стандартный ;
основной ( )
{
// Создаём набор — метки с 10 значениями
вектор < интервал > Метки '=' { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;
расчет << 'Вектор: \п ' ;
для ( интервал я : Метки )
расчет << я << ' ' ;
// Создаём Set — mark_set размера, равного размеру вектора
набор < интервал > mark_set ;
// Вставляем элементы из набора — студенты в вектор — Student_vc.
копировать ( начинать ( Метки ) ,конец ( Метки ) , вставка ( mark_set, конец ( mark_set ) ) ) ;
расчет << ' \п \п Набор: \п ' ;
для ( интервал я : mark_set )
расчет << я << ' ' ;
}
Выход:
Существующий вектор с именем «метки» имеет 10 значений. После копирования его в набор «marks_set» он содержит только шесть элементов, поскольку остальные четыре элемента дублируются.
Удалить пустые строки
Пустые строки, присутствующие в векторе, не используются. Хорошей практикой является удаление пустых строк, присутствующих в векторе. Давайте посмотрим, как удалить пустые строки из вектора C++:
- Повторите вектор, используя цикл «for».
- На каждой итерации проверяйте, является ли элемент пустым («») или не используется ли оператор «==» с функцией-членом at().
- Используя функцию std::erase(), удалите пустые строки после проверки предыдущего условия.
- Повторите шаги 2 и 3 до конца вектора.
Давайте создадим вектор «компании» из 10 строк. Среди них пять пустых, и мы удалим их, реализовав предыдущий подход.
#include#include <вектор>
с использованием пространство имен стандартный ;
основной ( ) {
вектор < нить > компании { «Компания-А» , '' , «Компания-Б» ,
'' , «Компания-С» , '' , «Компания-Д» , '' , '' , '' } ;
// Перебираем компании
// и удаляем пустые элементы с помощью метода Erase()
для ( интервал итр '=' 1 ; итр < компании. размер ( ) ; ++ итр ) {
если ( компании. в ( итр ) == '' ) {
компании. стереть ( компании. начинать ( ) + итр ) ;
-- итр ;
}
}
// Отображение вектора
для ( авто & я : компании ) {
расчет << я << конец ;
}
}
Выход:
Теперь вектор «компании» содержит непустые строки.
Запись вектора в текстовый файл
Давайте обсудим, как записать все элементы, присутствующие в векторе, в файл, используя индексы вектора, используя метод fstream .
- Вставьте в него несколько элементов с помощью функции push_back после инициализации вектора.
- Используйте функцию open() из библиотеки «fstream» с режимом out.
- Пройдите каждый элемент, присутствующий в векторе, используя индексы в цикле for, и запишите каждый элемент в предоставленный файл.
- Наконец, закройте файл.
Давайте реализуем предыдущий подход, запустив код C++.
#include <вектор>#include <строка>
#include
#include
с использованием пространство имен стандартный ;
основной ( )
{
// Создаём вектор — v_data
// и помещаем в него два элемента.
вектор < нить > v_data ;
v_data. отталкивать ( 'Добро пожаловать' ) ;
v_data. отталкивать ( 'в LinuxHint' ) ;
поток f ;
//Открываем файл
ф. открыть ( 'написанный_файл.txt' ,ios_base :: вне ) ;
// Итерируем каждый элемент вектора и записываем в файл один за другим.
для ( интервал я '=' 0 ; я < v_data. размер ( ) ; я ++ )
{
ж << v_data [ я ] << конец ;
}
// Закрываем файл
ф. закрывать ( ) ;
}
Выход:
Вектор «v_data» содержит два элемента, и в пути, по которому выполняется программа, создается файл с элементами, присутствующими в векторе.
Создайте вектор из текстового файла
Мы научились записывать элементы, присутствующие в векторе, в текстовый файл. Здесь давайте создадим вектор из содержимого, присутствующего в текстовом файле.
- Создать ' еслипоток» переменная, которая используется для чтения информации из текстового файла, в котором мы создаем вектор из файла.
- Создайте пустой вектор для хранения содержимого файла и используйте пустую строковую переменную в качестве флага для проверки конца файла.
- Прочитайте следующую строку из файла, пока она не дойдет до конца (в основном, используя цикл «пока»). Используйте функцию push_back(), чтобы прочитать следующую строку и поместить ее в вектор.
- Отобразите строку, присутствующую в строке, отдельно, чтобы увидеть на консоли элементы, присутствующие в векторе.
Давайте реализуем предыдущий подход, запустив код C++. Давайте рассмотрим файл «data.txt» со следующим содержимым. Здесь имя вектора — «v_data».
#include
с использованием пространство имен стандартный ;
основной ( )
{
//Открываем текстовый файл - данные
файл ifstream ( 'данные.txt' ) ;
// Создаем вектор - v_data типа - строка
вектор < нить > v_data ;
стринги были ;
// Читаем следующую строку из data.txt
// пока не дойдет до конца.
пока ( файл >> был ) {
// Читаем следующую строку и помещаем ее в v_data
v_data. отталкивать ( был ) ;
}
// Отображение строки, присутствующей в строке, отдельно.
копировать ( v_data. начинать ( ) , v_data. конец ( ) , ostream_iterator < нить > ( расчет , ' \п ' ) ) ;
}
Выход:
Мы видим, что «v_data» содержит пять элементов, взятых из файла.
Заключение
В этой длинной статье мы рассмотрели все возможные примеры, которые используются в приложениях реального времени, связанных с векторами на языке программирования C++. Каждый пример объясняется синтаксисом, параметрами и примером вывода. Комментарии добавляются в каждый код, чтобы получить четкое представление о коде.