30 примеров векторов C++

30 Primerov Vektorov C



В C++ Vector — это одномерная структура данных, которая динамически увеличивается в зависимости от требований. В этой структуре данных можно эффективно организовать данные (вставку/изменение/удаление). Его приложения включают следующее:

  1. Представление математических векторов в научных и инженерных приложениях
  2. С помощью этой структуры данных можно реализовать очереди, стеки и т. д.

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







Тема содержания:

  1. Вставка элемента в вектор
  2. Вставка нескольких элементов в вектор
  3. Доступ к элементам из вектора
  4. Обновите элемент в векторе
  5. Удалить определенный элемент из вектора
  6. Удалить все элементы из вектора
  7. Союз векторов
  8. Пересечение векторов
  9. Проверьте, пуст ли вектор или нет
  10. Обход вектора с помощью Const_Iterator
  11. Обход вектора с помощью Reverse_Iterator
  12. Вставьте элементы в вектор
  13. Выделение элементов из вектора
  14. Поменяйте векторы
  15. Получите первый элемент из вектора
  16. Получить последний элемент из вектора
  17. Присвойте новые значения вектору
  18. Расширьте вектор с помощью Emplace()
  19. Расширьте вектор с помощью Emplace_Back()
  20. Максимальный элемент вектора
  21. Минимальный элемент вектора
  22. Сумма элементов вектора
  23. Поэлементное умножение двух векторов
  24. Скалярное произведение двух векторов
  25. Преобразуйте набор в вектор
  26. Удалите повторяющиеся элементы
  27. Преобразуйте вектор в набор
  28. Удалить пустые строки
  29. Запись вектора в текстовый файл
  30. Создайте вектор из текстового файла

Вставка элемента в вектор

станд::вектор::вставка() Функция в C++ STL используется для вставки элементов в указанную позицию.



Синтаксис:

вектор. вставлять ( позиция, элемент ) ;

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



Здесь можно использовать функцию Begin() для возврата итератора, указывающего на первый элемент входного вектора. Добавляя позицию к этой функции, элемент вставляется в эту позицию.





Давайте создадим вектор «student_names» типа string и вставим две строки в первую и вторую позиции, одну за другой, с помощью функции Insert().

#include

с использованием пространство имен стандартный ;

основной ( )

{

// Инициализация вектора — Student_names

вектор < нить > имена_студентов ;

расчет << «Существующий вектор: \п ' ;

для ( авто я : имена_студентов ) расчет << я << конец ;

// Вставляем 'Шраван Кумар' в первую позицию

имена_студентов. вставлять ( имена_студентов. начинать ( ) + 0 , «Шраван Кумар» ) ;

// Вставляем 'Шраван Кумар' во вторую позицию

имена_студентов. вставлять ( имена_студентов. начинать ( ) + 1 , 'Лалита' ) ;

расчет << «Конечный вектор: \п ' ;

для ( авто дж : имена_студентов ) расчет << дж << конец ;

}

Выход:

Раньше вектор «student_names» был пустым. После вставки вектор содержит два элемента.



Вставка нескольких элементов в вектор

В этом сценарии мы используем ту же функцию, что и std::vector::insert(). Но нам нужно передать дополнительные/разные параметры в одну и ту же функцию, чтобы вставить несколько элементов в вектор.

Сценарий 1: вставка одного элемента несколько раз

В этом сценарии мы добавляем один и тот же элемент несколько раз.

Синтаксис:

вектор. вставлять ( положение, размер, элемент ) ;

Для этого нам нужно передать размер в качестве второго параметра функции Insert(). Всего параметров, передаваемых в эту функцию, — три.

Здесь:

  1. Параметр позиции указывает позицию вставляемого элемента. Если размер больше 1, индексом начальной позиции будет позиция.
  2. Параметр size указывает, сколько раз должен быть вставлен элемент.
  3. Параметр element принимает элемент, который нужно вставить в вектор.

Рассмотрим вектор «student_names» с двумя строками. Вставьте струны «Лаванья» пять раз во вторую позицию.

#include

с использованием пространство имен стандартный ;

основной ( )

{

// Инициализация вектора — Student_names

вектор < нить > имена_студентов { «Шраван Кумар» , 'Лалита' } ;

расчет << «Существующий вектор: \п ' ;

для ( авто я : имена_студентов ) расчет << я << конец ;

// Вставляем 'Лаванью' во вторую позицию 5 раз

имена_студентов. вставлять ( имена_студентов. начинать ( ) + 1 , 5 , 'Лаванья' ) ;

расчет << ' \п Конечный вектор: \п ' ;

для ( авто дж : имена_студентов ) расчет << дж << конец ;

}

Выход:

В существующем векторе «Шраван Кумар» находится на первой позиции, а «Лалита» — на второй позиции. После пятикратного добавления «Лаванья» (со второй позиции на шестую) «Лалита» переместилась на седьмую позицию (последнюю).

Сценарий 2. Вставка нескольких элементов

В этом сценарии мы добавляем одновременно разные элементы из другого вектора. Здесь мы также используем ту же функцию, но синтаксис и параметры изменятся.

Синтаксис:

вектор. вставлять ( позиция, первый_итератор, второй_итератор ) ;

Для этого нам нужно передать размер в качестве второго параметра функции Insert(). Всего параметров, передаваемых в эту функцию, — три.

Здесь:

  1. Параметр позиции указывает позицию вставляемого элемента.
  2. «first_iterator» указывает начальную позицию, из которой должны быть вставлены элементы (по сути, с помощью функции Begin() возвращается итератор, указывающий на первый элемент, присутствующий в контейнере).
  3. «Второй_итератор» указывает конечную позицию, до которой должны быть вставлены элементы (по сути, с помощью функции 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(), чтобы получить позицию элемента, присутствующего в векторе, который нужно удалить.

Рассмотрим вектор «продукты» с пятью элементами.

  1. Удалите третий элемент, указав итератор Begin(). Begin() указывает на первый элемент вектора. Если мы добавим два к этой функции, она укажет на третий элемент.
  2. Удалите последний элемент, указав итератор end(). End() указывает на последний элемент вектора.
#include

с использованием пространство имен стандартный ;

основной ( )

{

// Создаем вектор - продукты с 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, ВыходнойИтератор рез. ) ;

Здесь:

  1. «first1» указывает на первый элемент первого итератора (вектора).
  2. «last1» указывает на последний элемент первого итератора (вектора).
  3. «first2» указывает на первый элемент второго итератора (вектора).
  4. «last2» указывает на последний элемент второго итератора (вектора).

Создайте два вектора — «subjects1» и «subjects2» — целочисленного типа.

  1. Отсортируйте два вектора с помощью функции sort(), передав итераторы.
  2. Создайте выходной вектор (итератор).
  3. Найдите объединение этих двух векторов, используя функцию std::set_union(). Используйте Begin() в качестве первого итератора и End() в качестве последнего итератора.
  4. Выполните итерацию выходного вектора, чтобы отобразить элементы, возвращаемые функцией.
#include <алгоритм>

#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» — целочисленного типа.

  1. Отсортируйте два вектора с помощью функции sort(), передав итераторы.
  2. Создайте выходной вектор (итератор).
  3. Найдите пересечение этих двух векторов, используя функцию std::set_intersection(). Используйте Begin() в качестве первого итератора и End() в качестве последнего итератора.
  4. Выполните итерацию выходного вектора, чтобы отобразить элементы, возвращаемые функцией.
#include <алгоритм>

#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() (указывает на последний элемент вектора) — это две функции, предоставляемые каждым контейнером, которые используются для возврата постоянного итератора в начало и конец контейнер. При итерации вектора мы можем использовать эти две функции.

  1. Давайте создадим вектор с именем «отделы» из пяти строк.
  2. Объявите const_iterator – ctr типа .
  3. Перейдите по отделам, используя предыдущий итератор, используя цикл «for», и отобразите его.
#include

#include <вектор>

с использованием пространство имен стандартный ;

основной ( )

{

// Создаем вектор - отделы

вектор < нить > отделы '=' { 'Продажи' , 'Услуга' ,

'HR' , 'ЭТО' , «Другие» } ;



вектор < нить > :: const_iterator ctr ;

// Перебираем отделы, используя const_iterator - ctr.

для ( ctr '=' отделы. cbegin ( ) ; ctr ! '=' отделы. немного ( ) ; ctr ++ ) {

расчет << * ctr << конец ;

}

}

Выход:

Обход вектора с помощью Reverse_Iterator

обратный_итератор также является итератором, похожим на const_iterator, но возвращает элементы в обратном порядке. rbegin() (указывает на последний элемент вектора) и rend() (указывает на первый элемент вектора) — это две функции, предоставляемые каждым контейнером, которые используются для возврата постоянного итератора в конец и начало контейнер.

  1. Давайте создадим вектор с именем «отделы» из пяти строк.
  2. Объявите обратный_итератор — rtr типа <строка>.
  3. Перейдите по отделам, используя предыдущий итератор, используя цикл «for», и отобразите его.
#include

#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(). Используя эту функцию, мы можем:

  1. Создайте вектор со всеми похожими элементами.
  2. Измените существующий вектор тем же элементом.

Синтаксис:

вектор. назначать ( размер, стоимость )

Для этой функции требуются два параметра.

Здесь:

  1. Размер определяет количество назначаемых элементов.
  2. Значение указывает назначаемый элемент.

Давайте создадим вектор с именем «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 позиция, элемент )

В эту функцию передаются два обязательных параметра.

Здесь:

  1. Первый параметр принимает позицию, чтобы мы могли вставить элемент в любую позицию. Мы можем получить позицию, используя функцию итератора Begin() или End().
  2. Второй параметр — это элемент, который нужно вставить в вектор.

Рассмотрим вектор «химических веществ» с двумя элементами.

  1. Вставьте «Марганец» в первую позицию – начало (химические вещества)
  2. Вставьте «Медь» в последнюю позицию – конец (химические вещества)
  3. Вставьте «Сера» в третью позицию – начало (химические вещества)+2.
#include <алгоритм>

#include

#include <вектор>

с использованием пространство имен стандартный ;

основной ( )

{

// Создаем вектор - химикаты

вектор < нить > химикаты '=' { «Кислород» , 'КО' } ;

расчет << «Настоящие химикаты:» << конец ;

для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )

расчет << химикаты [ я ] << конец ;



// Вставляем элемент в первую позицию

химикаты. расположение ( начинать ( химикаты ) , «Марганец» ) ;



// Вставляем элемент в последнюю позицию

химикаты. расположение ( конец ( химикаты ) , 'Медь' ) ;



// Вставляем элемент в третью позицию

химикаты. расположение ( начинать ( химикаты ) + 2 , «Сера» ) ;



расчет << ' \п Последние химикаты:' << конец ;

для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )

расчет << химикаты [ я ] << конец ;

}

Выход:

Теперь последний вектор содержит пять элементов (представленных на следующем снимке экрана).

Расширьте вектор с помощью Emplace_Back()

Элемент можно добавить (добавив в конец вектора), что можно сделать с помощью вектор::emplace_back() функция.

Синтаксис:

вектор. emplace_back ( элемент )

Обязательно необходимо передать элемент, добавляемый к вектору, в качестве параметра.

Давайте добавим два элемента один за другим, используя функцию emplace_back().

#include <алгоритм>

#include

#include <вектор>

с использованием пространство имен стандартный ;

основной ( )

{

// Создаем вектор - химикаты

вектор < нить > химикаты '=' { «Кислород» , 'КО' } ;

расчет << «Настоящие химикаты:» << конец ;

для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )

расчет << химикаты [ я ] << конец ;



// Вставляем марганец в конец вектора

химикаты. emplace_back ( «Марганец» ) ;



// Вставляем марганец в конец вектора

химикаты. emplace_back ( 'Медь' ) ;





расчет << ' \п Последние химикаты:' << конец ;

для ( интервал я '=' 0 ; я < химикаты. размер ( ) ; я ++ )

расчет << химикаты [ я ] << конец ;

}

Выход:

Теперь последний вектор содержит четыре элемента после добавления «Марганца» и «Меди».

Максимальный элемент вектора

  1. Создайте вектор с несколькими элементами.
  2. Чтобы найти максимальный элемент, присутствующий в векторе, используйте функцию *max_element(), которая принимает в качестве аргументов два итератора. Эти два параметра действуют как диапазон, и максимальный элемент возвращается в пределах предоставленного диапазона. Начальная позиция — начало(), а последняя позиция — конец().
* 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».

Минимальный элемент вектора

  1. Создайте вектор с несколькими элементами.
  2. Чтобы найти минимальный элемент, присутствующий в векторе, используйте функцию *min_element(), которая принимает в качестве аргументов два итератора. Эти два параметра действуют как диапазон, и минимальный элемент (меньше, чем все остальные элементы) возвращается в пределах предоставленного диапазона. Начальная позиция — начало(), а последняя позиция — конец().
* 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.

Поэлементное умножение двух векторов

  1. Создайте два вектора числового типа, причем два вектора должны быть одинакового размера (общее количество элементов, присутствующих в первом векторе, = общее количество элементов, присутствующих во втором векторе).
  2. Объявите новый вектор и используйте для цикла , выполните операцию умножения двух элементов на каждой итерации и сохраните значение в созданный вектор с помощью функции push_back().
  3. для ( интервал итр '=' 0 ; я < first_vec. размер ( ) ; итр ++ )

    {

    результат_вектор. отталкивать ( first_vec [ итр ] * сек_вещь [ итр ] ) ;

    }
  4. Отобразите элементы, присутствующие в результирующем векторе, путем его итерации.

Создайте вектор с именем «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() для возврата скалярного произведения. Эта функция принимает четыре обязательных параметра.

Здесь:

  1. Первый параметр относится к итератору, указывающему на начало первого вектора (укажите с помощью функции Begin()).
  2. Второй параметр относится к итератору, указывающему на конец первого вектора (задайте его с помощью функции end()).
  3. Третий параметр относится к итератору, указывающему на начало второго вектора (задайте его с помощью функции Begin()).
  4. Начальное значение должно быть передано в качестве последнего параметра, который является целым числом для накопления скалярного произведения.

Используйте ту же программу, которая создана для умножения двух векторов, и используйте функцию 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 первым )

Использовать станд::копировать() функция, которая вставляет элементы из набора в вектор. Требуется три параметра.

Здесь:

  1. Первый параметр относится к исходному итератору, который указывает на первый элемент итератора. Здесь set — это исходный итератор, указанный с помощью функции Begin().
  2. Аналогично, второй параметр указывает на последний элемент (функция end()).
  3. Третий параметр относится к целевому итератору, который указывает на первый элемент (указанный с помощью функции Begin())  в итераторе.

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

#include

с использованием пространство имен стандартный ;

основной ( )

{

// Создаём набор — ученики из 5 элементов

набор < нить > студенты '=' { 'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' } ;

расчет << 'Набор: \п ' ;

для ( строка я : студенты )

расчет << я << конец ;



// Создаем вектор - размер Student_vcof равен размеру набора

вектор < нить > студент_vc ( студенты. размер ( ) ) ;



// Вставляем элементы из набора — студенты в вектор — Student_vc.

копировать ( студенты. начинать ( ) , студенты. конец ( ) , Student_VC. начинать ( ) ) ;



расчет << ' \п Вектор: \п ' ;

для ( строка я : студент_vc )

расчет << я << конец ;

}

Выход:

Теперь все элементы, присутствующие в наборе «Студенты», копируются в вектор «students_vc».

Удалите повторяющиеся элементы

  1. Во-первых, нам нужно отсортировать элементы вектора так, чтобы все повторяющиеся элементы были соседними друг с другом, используя метод станд::сорт() функция.
  2. стандартный :: Сортировать ( Вектор первый, Вектор последний ) ;
  3. Используйте функцию std::unique(), чтобы выбрать повторяющиеся элементы. В то же время используйте функцию Erase() для удаления дубликатов, возвращаемых функцией std::unique(). Порядок элементов в конечном векторе может измениться.
  4. вектор. стереть ( стандартный :: уникальный ( Вектор первый, Вектор последний ) , Вектор последний ) )

Создайте вектор «студенты» из 10 элементов и верните вектор, удалив дубликаты.

#include

с использованием пространство имен стандартный ;

основной ( )

{

// Создаём вектор — студенты с 10 элементами

вектор < нить > студенты '=' { 'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' ,

'Шраван' , 'Бобби' , 'Мадху' , 'Мегана' , 'Лаванья' } ;

расчет << 'Студенты: \п ' ;

для ( строка я : студенты )

расчет << я << ' ' ;



// Сортируем все элементы вектора студентов.

Сортировать ( начинать ( студенты ) , конец ( студенты ) ) ;



// Используйте функцию unique() для удаления дубликатов с помощью функции Erase()

студенты. стереть ( уникальный ( начинать ( студенты ) , конец ( студенты ) ) , конец ( студенты ) ) ;



расчет << ' \п \п Уникальные студенты: \п ' ;

для ( авто итр '=' cbegin ( студенты ) ; итр ! '=' немного ( студенты ) ; ++ итр ) {

расчет << * итр << ' ' ;

}

}

Выход:

Теперь все элементы в векторе уникальны.

Преобразуйте вектор в набор

Set не допускает дублирования элементов. Если вы вводите текст для вставки вектора в набор с дубликатами, они будут игнорироваться. Мы используем ту же функцию std::copy(), которая использовалась в предыдущем сценарии, которая преобразовывала набор в вектор.

В этом сценарии:

  1. Первый параметр принимает вектор в качестве исходного итератора, заданного с помощью функции Begin().
  2. Второй параметр принимает вектор в качестве исходного итератора, указанного с помощью функции end().
  3. Передайте функцию 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++:

  1. Повторите вектор, используя цикл «for».
  2. На каждой итерации проверяйте, является ли элемент пустым («») или не используется ли оператор «==» с функцией-членом at().
  3. Используя функцию std::erase(), удалите пустые строки после проверки предыдущего условия.
  4. Повторите шаги 2 и 3 до конца вектора.

Давайте создадим вектор «компании» из 10 строк. Среди них пять пустых, и мы удалим их, реализовав предыдущий подход.

#include

#include <вектор>

с использованием пространство имен стандартный ;

основной ( ) {



вектор < нить > компании { «Компания-А» , '' , «Компания-Б» ,

'' , «Компания-С» , '' , «Компания-Д» , '' , '' , '' } ;



// Перебираем компании

// и удаляем пустые элементы с помощью метода Erase()

для ( интервал итр '=' 1 ; итр < компании. размер ( ) ; ++ итр ) {

если ( компании. в ( итр ) == '' ) {

компании. стереть ( компании. начинать ( ) + итр ) ;

-- итр ;

}
}

// Отображение вектора


для ( авто & я : компании ) {

расчет << я << конец ;

}

}

Выход:

Теперь вектор «компании» содержит непустые строки.

Запись вектора в текстовый файл

Давайте обсудим, как записать все элементы, присутствующие в векторе, в файл, используя индексы вектора, используя метод fstream .

  1. Вставьте в него несколько элементов с помощью функции push_back после инициализации вектора.
  2. Используйте функцию open() из библиотеки «fstream» с режимом out.
  3. Пройдите каждый элемент, присутствующий в векторе, используя индексы в цикле for, и запишите каждый элемент в предоставленный файл.
  4. Наконец, закройте файл.

Давайте реализуем предыдущий подход, запустив код 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» содержит два элемента, и в пути, по которому выполняется программа, создается файл с элементами, присутствующими в векторе.

Создайте вектор из текстового файла

Мы научились записывать элементы, присутствующие в векторе, в текстовый файл. Здесь давайте создадим вектор из содержимого, присутствующего в текстовом файле.

  1. Создать ' еслипоток» переменная, которая используется для чтения информации из текстового файла, в котором мы создаем вектор из файла.
  2. Создайте пустой вектор для хранения содержимого файла и используйте пустую строковую переменную в качестве флага для проверки конца файла.
  3. Прочитайте следующую строку из файла, пока она не дойдет до конца (в основном, используя цикл «пока»). Используйте функцию push_back(), чтобы прочитать следующую строку и поместить ее в вектор.
  4. Отобразите строку, присутствующую в строке, отдельно, чтобы увидеть на консоли элементы, присутствующие в векторе.

Давайте реализуем предыдущий подход, запустив код 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++. Каждый пример объясняется синтаксисом, параметрами и примером вывода. Комментарии добавляются в каждый код, чтобы получить четкое представление о коде.