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

30 Primera Za C Vektori



В 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. Създайте вектор от текстов файл

Вмъкване на елемент във вектор

The std::vector::insert() функция в C++ STL се използва за вмъкване на елементите на посочената позиция.



Синтаксис:

вектор. вмъкнете ( позиция, елемент ) ;

Нека използваме тази функция и предадем първата позиция като параметър, който указва позицията, в която трябва да бъде вмъкнат елементът, и предоставим елемента като втори параметър.



Функцията begin() може да се използва тук, за да върне итератор, който сочи към първия елемент на входния вектор. Чрез добавяне на позиция към тази функция, елементът се вмъква в тази позиция.





Нека създадем вектора „student_names“ от тип string и вмъкнем два низа на първа и втора позиция, един след друг, като използваме функцията insert().

#include

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектора - student_names

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

cout << „Съществуващ вектор: ' ;

за ( Автоматичен i : имена_на_студенти ) cout << i << endl ;

// Вмъкнете 'Sravan Kumar' на първа позиция

имена_на_студенти. вмъкнете ( имена_на_студенти. започвам ( ) + 0 , 'Шраван Кумар' ) ;

// Вмъкнете 'Sravan Kumar' на втората позиция

имена_на_студенти. вмъкнете ( имена_на_студенти. започвам ( ) + 1 , 'Лалита' ) ;

cout << „Краен вектор: ' ;

за ( Автоматичен й : имена_на_студенти ) cout << й << endl ;

}

Изход:

Преди това векторът „student_names“ беше празен. След вмъкване векторът съдържа два елемента.



Вмъкване на множество елементи във вектор

Използваме същата функция, която е std::vector::insert() в този сценарий. Но трябва да предадем допълнителните/различни параметри на същата функция, за да вмъкнем множество елементи във вектор.

Сценарий 1: Вмъкване на един елемент няколко пъти

В този сценарий добавяме един и същ елемент няколко пъти.

Синтаксис:

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

За да направим това, трябва да предадем размера като втори параметър на функцията insert(). Общите параметри, които се предават на тази функция, са три.

Тук:

  1. Параметърът за позиция указва позицията на елемента, който да бъде вмъкнат. Ако размерът е по-голям от 1, индексът на началната позиция ще бъде позицията.
  2. Параметърът size указва колко пъти трябва да бъде вмъкнат даден елемент.
  3. Параметърът елемент взема елемента, който трябва да бъде вмъкнат във вектор.

Помислете за вектора „student_names“ с два низа. Поставете струните 'Lavanya' пет пъти на втората позиция.

#include

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектора - student_names

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

cout << „Съществуващ вектор: ' ;

за ( Автоматичен i : имена_на_студенти ) cout << i << endl ;

// Вмъкнете 'Lavanya' на втора позиция 5 пъти

имена на ученици. вмъкнете ( имена_на_студенти. започвам ( ) + 1 , 5 , 'Лаваня' ) ;

cout << ' Краен вектор: ' ;

за ( Автоматичен й : имена на ученици ) cout << й << endl ;

}

Изход:

В съществуващия вектор „Sravan Kumar“ е на първа позиция, а „Lalitha“ е на втора позиция. След вмъкване на „Лаваня“ пет пъти (от втора позиция до шеста позиция), „Лалита“ се премести на седма позиция (последна).

Сценарий 2: Вмъкване на множество елементи

В този сценарий добавяме различните елементи наведнъж от друг вектор. Тук също използваме същата функция, но синтаксисът и параметрите ще се променят.

Синтаксис:

вектор. вмъкнете ( позиция, първи_итератор, втори_итератор ) ;

За да направим това, трябва да предадем размера като втори параметър на функцията insert(). Общите параметри, които се предават на тази функция, са три.

Тук:

  1. Параметърът за позиция указва позицията на елемента, който да бъде вмъкнат.
  2. „First_iterator“ указва началната позиция, от която трябва да бъдат вмъкнати елементите (по принцип, използвайки функцията begin(), се връща итератор, който сочи към първия елемент, който присъства в контейнера).
  3. „Second_iterator“ указва крайната позиция, до която елементите трябва да бъдат вмъкнати (по принцип, като се използва функцията end(), се връща итератор, който сочи до последната точка, която присъства в контейнера).

Създайте два вектора, „marks1“ и „marks2“, от целочислен тип. Вмъкнете всички елементи, които присъстват във вектора „marks2“ в първата позиция на вектора „marks1“.

#include

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектора - marks1

вектор < вътр > марки1 { 100 , 89 , 90 , 78 , 98 } ;

cout << „Първи вектор: ' ;

за ( Автоматичен i : марки1 ) cout << i << endl ;

// Инициализиране на вектора - marks2

вектор < вътр > марки2 { 56 , Четири пет , 65 } ;

cout << „Втори вектор: ' ;

за ( Автоматичен й : марки2 ) cout << й << endl ;

марки1. вмъкнете ( започвам ( марки1 ) , започнете ( марки2 ) , край ( марки2 ) ) ;



// Краен вектор

cout << „Първи-последен вектор: ' ;

за ( Автоматичен х : марки1 )

cout << х << ' ' ;

}

Изход:

Първият вектор (marks1) съдържа пет елемента, а вторият вектор (marks2) съдържа три елемента. Предадохме параметрите за начало (марки1), начало (марки2), край (марки2) на функцията „вмъкване“, така че всички елементи, които присъстват във втория вектор, да бъдат итерирани и вмъкнати в първия вектор в началото. И така, първият вектор съдържа осем елемента.

Достъп до елементите от вектор

1. Използване на оператора [].

В някои сценарии може да имате изискване да върнете само конкретните елементи от вектора. Връщането на всички елементи не е необходимо. Така че, за да върнете само специфичните елементи, базирани на индекса, се използват операторът на индекса и функциите at().

Синтаксис:

вектор [ позиция_индекс ]

В C++ индексирането започва от 0 за всяка структура от данни. Ако елементът не съществува, той се връща празен (няма грешка или се извежда предупреждение).

Помислете за вектора „продукти“ с пет елемента. Достъп до всички елементи един по един, като използвате позицията на индекса.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

//Достъп до елементи от продуктите

cout << „Първи елемент:“ << продукти [ 0 ] << endl ;

cout << „Втори елемент:“ << продукти [ 1 ] << endl ;

cout << „Трети елемент:“ << продукти [ 2 ] << endl ;

cout << 'Четвърти елемент:' << продукти [ 3 ] << endl ;

cout << 'Пети елемент:' << продукти [ 4 ] << endl ;



// Опит за достъп до 9-ти елемент

cout << 'Девети елемент:' << продукти [ 8 ] << endl ;

}

Изход:

Няма елемент в индекс 8. Така че се връща празно.

2. Използване на функцията At().

At() е член-функция, която е подобна на предишния случай на употреба, но връща изключението „std::out_of_range“, когато ѝ бъде предоставен индексът извън диапазона.

Синтаксис:

вектор. при ( позиция_индекс )

Трябва да предадем позицията на индекса на тази функция.

Помислете за вектора „продукти“ с пет елемента. Осъществете достъп до всички елементи един по един, като използвате позицията на индекса и се опитайте да получите достъп до елемента, който присъства на 9-та позиция.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

//Достъп до елементи от продуктите

cout << „Първи елемент:“ << продукти. при ( 0 ) << endl ;

cout << „Втори елемент:“ << продукти. при ( 1 ) << endl ;

cout << „Трети елемент:“ << продукти. при ( 2 ) << endl ;

cout << 'Четвърти елемент:' << продукти. при ( 3 ) << endl ;

cout << 'Пети елемент:' << продукти. при ( 4 ) << endl ;



//Достъп до елементите, които не са във вектора

cout << 'Девети елемент:' << продукти. при ( 8 ) << endl ;

}

Изход:

Възниква грешка при достъп до 9-ия елемент:

terminate, извикан след хвърляне на екземпляр на 'std::out_of_range'

Какво ( ) : вектор :: _M_обхват_проверка : __н ( кое е 8 ) >= това - > размер ( ) ( кое е 5 )

Актуализиране на елемент във вектор

1. Използване на оператора [].

Използвайки позицията на индекса, можем да актуализираме елемента във вектора. Операторът [] заема позицията на индекса на елемента, който трябва да бъде актуализиран. Новият елемент ще бъде присвоен на този оператор.

Синтаксис:

вектор [ позиция_индекс ] = елемент

Помислете за вектора „student_marks“ с пет стойности. Актуализирайте елементите, присъстващи в индекси 1 и 3.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - student_marks

вектор < вътр > студентски_оценки { 98 , 78 , 90 , 67 , 89 } ;

cout << „Съществуващи марки:“ << endl ;

за ( вътр itr : студентски_оценки )

cout << itr << endl ;

// Актуализиране на елемент при индекс-3 със 100

студентски_оценки [ 3 ] = 100 ;

// Актуализиране на елемент при индекс-1 с ​​60

студентски_оценки [ 1 ] = 60 ;

cout << „Окончателни оценки:“ << endl ;

за ( вътр itr : студентски_оценки )

cout << itr << endl ;

}

Изход:

Можем да видим, че крайният вектор съдържа актуализираните елементи при индекси 1 и 3.

2. Използване на функцията At().

Подобно на индексния оператор, at() е основно функция член, която актуализира стойността въз основа на индекса в итератор. Ако индексът, който е посочен в тази функция, не съществува, се хвърля изключението „std::out_of_range“.

вектор. при ( позиция_индекс ) = елемент

Помислете за вектора „продукти“ с пет елемента. Актуализирайте всички елементи, присъстващи във вектора, с други елементи.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

cout << „Съществуващи продукти:“ << endl ;

за ( низ itr : продукти )

cout << itr << endl ;

//Актуализиране на всички низове

продукти. при ( 0 ) = 'торта' ;

продукти. при ( 1 ) = 'Шоколад' ;

продукти. при ( 2 ) = 'плодове' ;

продукти. при ( 3 ) = 'лук' ;

продукти. при ( 4 ) = 'Безалкохолни напитки' ;



cout << ' Крайни продукти: ' << endl ;

за ( низ itr : продукти )

cout << itr << endl ;

}

Изход:

Премахване на конкретен елемент от вектор

В C++, std::vector::erase() функция се използва за премахване на конкретен елемент/диапазон от елементи от вектор. Елементите се премахват въз основа на позициите на итератора.

Синтаксис:

вектор. изтрива ( позиция на итератора )

Нека видим синтаксиса за премахване на конкретния елемент от вектор. Можем да използваме функциите begin() или end(), за да получим позицията на елемента, който присъства във вектора, който трябва да бъде премахнат.

Помислете за вектора „продукти“ с пет елемента.

  1. Премахнете третия елемент, като посочите итератора begin(). Begin() сочи към първия елемент във вектора. Ако добавим две към тази функция, тя сочи към третия елемент.
  2. Премахнете последния елемент, като посочите итератора end(). End() сочи към последния елемент във вектора.
#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

cout << „Съществуващи продукти:“ << endl ;

за ( низ itr : продукти )

cout << itr << endl ;



// Премахване на 3-ти елемент

продукти. изтрива ( продукти. започвам ( ) + 2 ) ;

cout << ' След премахване на 3-ти елемент: ' ;

за ( низ itr : продукти )

cout << itr << endl ;

// Премахване на последния елемент

продукти. изтрива ( продукти. край ( ) ) ;

cout << ' След премахване на последния елемент: ' ;

за ( низ itr : продукти )

cout << itr << endl ;

}

Изход:

Сега има само три елемента („сапун“, „шампоан“, „плодове“), които съществуват във вектора „продукти“.

Премахване на всички елементи от вектор

Сценарий 1: Премахване на набор от елементи от вектор

Нека използваме функцията std::vector::erase(), за да премахнем множество елементи в диапазон.

Синтаксис:

вектор. изтрива ( итератор първи, итератор последен )

Двата итератора (begin() сочи към първия елемент и end() сочи към функциите на последния елемент) се използват за указване на диапазона.

Разгледайте вектора „продукти“ с пет елемента и премахнете всички елементи от втората позиция. За да се постигне това, първият итератор е begin (products)+1, който сочи към втория елемент, а вторият итератор е end (products).

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

cout << „Съществуващи продукти:“ << endl ;

за ( низ itr : продукти )

cout << itr << endl ;



// Премахнете всички елементи от втората позиция

продукти. изтрива ( започвам ( продукти ) + 1 ,край ( продукти ) ) ;

cout << ' Крайни продукти: ' ;

за ( низ itr : продукти )

cout << itr << endl ;

}

Изход:

Сега има само един елемент („сапун“), който присъства във вектора „продукти“.

Сценарий 2: Премахнете всички елементи от вектора

Да използваме std::vector::clear() функция за премахване на всички елементи от вектора.

Синтаксис:

вектор. ясно ( )

Към тази функция не се предават параметри.

Помислете за същия вектор, който беше използван в първия сценарий, и премахнете всички елементи с помощта на функцията clear().

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на векторни продукти с 5 низа

вектор < низ > продукти { 'сапун' , 'шампоан' , 'масло' , 'плодове' , 'зеленчуци' } ;

cout << „Съществуващи продукти:“ << endl ;

за ( низ itr : продукти )

cout << itr << endl ;



// Премахнете всички елементи от продуктите

продукти. ясно ( ) ;

cout << ' Крайни продукти: ' ;

за ( низ itr : продукти )

cout << itr << endl ;

}

Изход:

Виждаме, че във вектора „продукти“ няма елементи.

Съюз на векторите

Възможно е да се извърши операция UNION върху вектори, като се използва функцията std::set_union(). Union връща уникалните елементи от векторите, като игнорира дублиращите се елементи. Трябва да предадем и двата итератора на тази функция. Заедно с това трябва да бъде подаден изходен итератор, който съхранява резултата, върнат от двата итератора.

Синтаксис:

set_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

Тук:

  1. “first1” сочи към първия елемент на първия итератор (вектор).
  2. „Last1“ сочи към последния елемент на първия итератор (вектор).
  3. “First2” сочи към първия елемент на втория итератор (вектор).
  4. „Last2“ сочи към последния елемент на втория итератор (вектор).

Създайте два вектора – „subjects1“ и „subjects2“ – от тип integer.

  1. Сортирайте двата вектора с помощта на функцията sort() чрез предаване на итераторите.
  2. Създайте изходен вектор (итератор).
  3. Намерете обединението на тези два вектора с помощта на функцията std::set_union(). Използвайте begin() като първи итератор и end() като последен итератор.
  4. Повторете изходния вектор, за да покажете елементите, върнати от функцията.
#include <алгоритъм>

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - marks1

вектор < вътр > марки1 = { 100 , 90 , 80 , 70 , 60 } ;



// Създаване на вектор - marks2

вектор < вътр > марки2 = { 80 , 90 , 60 , 70 , 100 } ;

// Сортиране на двата вектора

вид ( марки1. започвам ( ) , марки1. край ( ) ) ;

вид ( марки2. започвам ( ) , марки2. край ( ) ) ;

вектор < вътр > изходенВектор ( марки1. размер ( ) + марки2. размер ( ) ) ;

вектор < вътр > :: итератор i, s ;

i = set_union ( марки1. започвам ( ) , марки1. край ( ) ,

марки2. започвам ( ) , марки2. край ( ) ,

изходенВектор. започвам ( ) ) ;

cout << ' марки 1 U марки 2: ' ;

за ( с = изходенВектор. започвам ( ) ; с ! = i ; ++ с )

cout << * с << ' ' << ' ' ;

}

Изход:

Има само пет уникални елемента и в двата вектора (субекти1 и субекти2).

Пресичане на вектори

Намирането на пресечната точка на два вектора може да бъде възможно с помощта на функцията std::set_intersection(). Intersection връща елементите, които присъстват и в двата вектора.

Синтаксис:

набор_пресечка ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;

Параметрите, които се предават на функцията set_union(), могат да се предават и на тази функция set_intersection().

Създайте два вектора – „subjects1“ и „subjects2“ – от тип integer.

  1. Сортирайте двата вектора с помощта на функцията sort() чрез предаване на итераторите.
  2. Създайте изходен вектор (итератор).
  3. Намерете пресечната точка на тези два вектора с помощта на функцията std::set_intersection(). Използвайте begin() като първи итератор и end() като последен итератор.
  4. Повторете изходния вектор, за да покажете елементите, върнати от функцията.
#include <алгоритъм>

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - marks1

вектор < вътр > марки1 = { 100 , 10 , 80 , 40 , 60 } ;



// Създаване на вектор - marks2

вектор < вътр > марки2 = { петдесет , 90 , 60 , 10 , 100 } ;

// Сортиране на двата вектора

вид ( марки1. започвам ( ) , марки1. край ( ) ) ;

вид ( марки2. започвам ( ) , марки2. край ( ) ) ;

вектор < вътр > изходенВектор ( марки1. размер ( ) + марки2. размер ( ) ) ;

вектор < вътр > :: итератор i, s ;

i = набор_пресечка ( марки1. започвам ( ) , марки1. край ( ) ,

марки2. започвам ( ) , марки2. край ( ) ,

изходенВектор. започвам ( ) ) ;

cout << ' марки1 ∩ марки2: ' ;

за ( с = изходенВектор. започвам ( ) ; с ! = i ; ++ с )

cout << * с << ' ' << ' ' ;

}

Изход:

Има само три елемента, присъстващи и в двата вектора (субекти1 и субекти2).

Проверете дали векторът е празен или не

Преди да работите с вектори, е важно да проверите дали векторът е празен или не. Също така е добра практика в софтуерните проекти да проверявате дали векторът е празен или не, преди да извършите операции като CRUD операции и т.н.

1. Използване на Std::vector::empty()

Тази функция връща 1, ако векторът е празен (не съдържа никакъв елемент). В противен случай се връща 0. Към тази функция не се предава параметър.

2. Използване на Std::vector::size()

Функцията std::vector::size() връща цяло число, което представлява общия брой елементи, присъстващи във вектора.

Създайте два вектора – „college1“ и „college2“. „College1“ съдържа пет елемента, а „college2“ е празен. Приложете и двете функции върху двата вектора и проверете изхода.

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

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - колеж1

вектор < низ > колеж1 = { 'колеж-А' , 'колеж-Б' , 'колеж-C' , 'колеж-Д' , 'колеж-E' } ;

// Създаване на вектор - college2

вектор < низ > колеж2 ;

// празен()

cout << колеж1. празен ( ) << endl ;

cout << колеж2. празен ( ) << endl ;

// размер()

cout << колеж1. размер ( ) << endl ;

cout << колеж2. размер ( ) << endl ;

}

Изход:

Функцията empty() връща 0 за „college1“ и 1 за „college2“. Функцията size() връща пет за „college1“ и 0 за „college2“.

Обхождане на вектор с помощта на Const_Iterator

Когато работите върху C++ контейнери като набори, вектори и т.н., е възможно да обхождате всички елементи, които присъстват в контейнера, без да ги модифицирате. The const_iterator е един от итераторите, които постигат този сценарий. cbegin() (посочва първия елемент във вектора) и cend() (посочва последния елемент във вектора) са двете функции, предоставени от всеки контейнер, който се използва за връщане на константния итератор в началото и края на контейнера. Докато итерираме вектора, можем да използваме тези две функции.

  1. Нека създадем вектор с име „отдели“ с пет низа.
  2. Декларирайте const_iterator – ctr от тип .
  3. Итерирайте отделите, като използвате предишния итератор, като използвате цикъла „for“ и го покажете.
#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - отдели

вектор < низ > отдели = { 'Продажби' , 'Обслужване' ,

'HR' , 'ТО' , 'Други' } ;



вектор < низ > :: const_iterator центр ;

// Итериране на отделите с помощта на const_iterator - ctr.

за ( центр = отдели. cbegin ( ) ; центр ! = отдели. няколко ( ) ; центр ++ ) {

cout << * центр << endl ;

}

}

Изход:

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

The обратен_итератор също е итератор, който е подобен на const_iterator, но връща елементите в обратен ред. rbegin() (сочи към последния елемент във вектора) и rend() (сочи към първия елемент във вектора) са двете функции, предоставени от всеки контейнер, който се използва за връщане на константния итератор към края и началото на контейнера.

  1. Нека създадем вектор с име „отдели“ с пет низа.
  2. Декларирайте reverse_iterator – rtr от тип .
  3. Итерирайте отделите, като използвате предишния итератор, като използвате цикъла „for“ и го покажете.
#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - отдели

вектор < низ > отдели = { 'Продажби' , 'Обслужване' ,

'HR' , 'ТО' , 'Други' } ;



вектор < низ > :: обратен_итератор rtr ;

// Итериране на отделите с помощта на reverse_iterator - rtr.

за ( rtr = отдели. rbegin ( ) ; rtr ! = отдели. прави ( ) ; rtr ++ ) {

cout << * rtr << endl ;

}

}

Изход:

Натиснете елементите във вектора

Избутването или добавянето на елементите във вектор е еднопосочно вмъкване, което може да се направи с помощта на вектор :: push_back () функция.

Синтаксис:

вектор. избутвам ( елемент )

Необходим е елемент, който да бъде вкаран във вектора като параметър.

Нека създадем празен вектор с име „departments“ с пет низа и бутнем два низа един след друг с помощта на функцията push_back().

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектор - отдели

вектор < низ > отдели ;

cout << „Действителни отдели:“ << endl ;

за ( Автоматичен itr = отдели. започвам ( ) ; itr ! = отдели. край ( ) ; ++ itr )

cout << * itr << endl ;

// Натиснете 'Продажби'

отдели. избутвам ( 'Продажби' ) ;

// Натисни го'

отдели. избутвам ( 'ТО' ) ;

cout << ' Последни отдели:' << endl ;

за ( Автоматичен itr = отдели. започвам ( ) ; itr ! = отдели. край ( ) ; ++ itr )

cout << * itr << endl ;

}

Изход:

Първо натискаме „Продажби“. След това „ТО“ се избутва във вектора. Сега векторът „отдели“ съдържа два елемента.

Извадете елементите от вектора

Ако искате да изтриете последния елемент, който присъства във вектора, като използвате вектор :: pop_back () функция е най-добрият подход. Той изтрива последния елемент, който присъства във вектора.

Синтаксис:

вектор. pop_back ( )

Не е необходим параметър за тази функция. Показва недефинираното поведение, ако се опитаме да изтрием последния елемент от празен вектор.

Нека създадем празен вектор с име „отдели“ с пет низа и да изтрием последния елемент, използвайки предишната функция. Показване на вектора и в двата случая.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектор - отдели

вектор < низ > отдели = { 'Продажби' , 'ТО' , 'Обслужване' , 'Маркетинг' , 'HR' } ;

cout << „Действителни отдели:“ << endl ;

за ( Автоматичен itr = отдели. започвам ( ) ; itr ! = отдели. край ( ) ; ++ itr )

cout << * itr << endl ;



// Изтриване на последния елемент

отдели. pop_back ( ) ;

cout << ' Последни отдели:' << endl ;

за ( Автоматичен itr = отдели. започвам ( ) ; itr ! = отдели. край ( ) ; ++ itr )

cout << * itr << endl ;

}

Изход:

„HR“ е последният елемент, който присъства във вектора „отдели“. И така, той се премахва от вектора и крайният вектор съдържа „Продажби“, „ИТ“, „Услуга“ и „Маркетинг“.

Разменете векторите

The вектор::размяна() функция в C++ STL се използва за размяна на всички елементи, които присъстват в два вектора.

Синтаксис:

първи_вектор. размяна ( втори_вектор )

Той не отчита размера на векторите, но векторите трябва да са от един и същи тип (възниква грешка, ако типовете вектори са различни).

Нека създадем два вектора – „плодове“ и „зеленчуци“ – от тип низ с различни размери. Разменете всеки от тях и покажете векторите и в двата случая.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Инициализиране на вектор - плодове

вектор < низ > плодове = { 'ябълка' , 'манго' } ;

cout << „Истински плодове:“ << endl ;

за ( Автоматичен itr = плодове. започвам ( ) ; itr ! = плодове. край ( ) ; ++ itr )

cout << * itr << endl ;



// Инициализиране на вектор - зеленчуци

вектор < низ > зеленчуци = { 'картоф' , 'Домат' , 'Бринджал' } ;

cout << ' Истински зеленчуци:' << endl ;

за ( Автоматичен itr = зеленчуци. започвам ( ) ; itr ! = зеленчуци. край ( ) ; ++ itr )

cout << * itr << endl ;



// Разменете елементите в двата вектора

плодове. размяна ( зеленчуци ) ;

cout << ' Плодове след размяна:' << endl ;

за ( Автоматичен itr = плодове. започвам ( ) ; itr ! = плодове. край ( ) ; ++ itr )

cout << * itr << endl ;

cout << ' Зеленчуци след размяна:' << endl ;

за ( Автоматичен itr = зеленчуци. започвам ( ) ; itr ! = зеленчуци. край ( ) ; ++ itr )

cout << * itr << endl ;

}

Изход:

Преди това векторът „плодове“ съдържа два елемента, а векторът „зеленчуци“ съдържа три елемента. След размяната векторът „плодове“ съдържа три елемента, а векторът „зеленчуци“ съдържа два елемента.

Извлечете първия елемент от вектора

В някои случаи изискването е да се върне само първият елемент от вектора. Функцията vector::front() в C++ STL извлича само първия елемент от вектора.

Синтаксис:

вектор. отпред ( )

Тази функция няма да приема никакви параметри. Ако векторът е празен, се хвърля грешка.

Нека създадем два вектора – „плодове“ и „зеленчуци“ – от тип низ и се опитаме да извлечем първия елемент отделно от двата вектора.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - плодове с 2 елемента

вектор < низ > плодове = { 'ябълка' , 'манго' } ;

// Връща първия елемент

cout << плодове. отпред ( ) << endl ;



// Инициализиране на вектор - зеленчуци

вектор < низ > зеленчуци ;

// Опитайте се да върнете първия елемент

cout << зеленчуци. отпред ( ) ;

}

Изход:

„Ябълка“ е първият елемент, който присъства във вектора „плодове“. И така, връща се. Но възниква грешка, когато се опитаме да извлечем първия елемент от вектора „зеленчуци“, тъй като той е празен.

Извлечете последния елемент от вектора

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

Синтаксис:

вектор. обратно ( )

Тази функция няма да приема никакви параметри. Ако векторът е празен, се хвърля грешка.

Нека създадем два вектора – „плодове“ и „зеленчуци“ – от тип низ и се опитаме да извлечем последния елемент отделно от двата вектора.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - плодове с 2 елемента

вектор < низ > плодове = { 'ябълка' , 'манго' } ;

// Извличане на последния елемент

cout << плодове. обратно ( ) << endl ;



// Инициализиране на вектор - зеленчуци

вектор < низ > зеленчуци ;

// Опитайте се да извлечете последния елемент

cout << зеленчуци. обратно ( ) ;

}

Изход:

„Манго“ е последният елемент, който присъства във вектора „плодове“. И така, връща се. Но възниква грешка, когато се опитаме да извлечем последния елемент от вектора „зеленчуци“, тъй като той е празен.

Присвояване на нови стойности на вектор

В някои сценарии, ако искате да актуализирате всички стойности с новата стойност или да създадете вектор със същите стойности, използването на функцията vector::assign() е най-добрият подход. С помощта на тази функция можем:

  1. Създайте вектора с всички подобни елементи
  2. Променете съществуващия вектор със същия елемент

Синтаксис:

вектор. възлагам ( размер, стойност )

За тази функция са необходими два параметъра.

Тук:

  1. Размерът определя броя на елементите, които трябва да бъдат присвоени.
  2. Стойността определя елемента, който да бъде присвоен.

Нека създадем вектор с име „marks1“ с пет стойности и да актуализираме този вектор с четири елемента, така че всички елементи в актуализирания вектор да са равни на 20.

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

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - marks1

вектор < вътр > марки1 = { 100 , 90 , 80 , 70 , 60 } ;

cout << „Действителен вектор:“ << endl ;

за ( вътр i = 0 ; i < марки1. размер ( ) ; i ++ )

cout << марки1 [ i ] << endl ;



марки1. възлагам ( 4 , двадесет ) ;



cout << ' Актуализиран вектор:' << endl ;

за ( вътр i = 0 ; i < марки1. размер ( ) ; i ++ )

cout << марки1 [ i ] << endl ;

}

Изход:

Преди това векторът съдържа пет различни елемента. Сега той съдържа само четири елемента и всички са равни на 20.

Разширете вектора с помощта на Emplace()

Вече знаем, че новите елементи се вмъкват динамично във всяка позиция във вектор. Възможно е с помощта на функцията vector::emplace(). Нека бързо да разгледаме синтаксиса и параметрите, приети от тази функция.

Синтаксис:

вектор. местоположение ( const_iterator позиция, елемент )

Към тази функция се предават два задължителни параметъра.

Тук:

  1. Първият параметър заема позицията, така че да можем да вмъкнем елемента във всяка позиция. Можем да получим позицията с помощта на итераторната функция begin() или end().
  2. Вторият параметър е елементът, който трябва да бъде вмъкнат във вектора.

Помислете за вектора „химикали“ с два елемента.

  1. Поставете „Манган“ на първа позиция – начало (химикали)
  2. Вмъкнете „Мед“ на последната позиция – край (химикали)
  3. Вмъкнете „Sulphur“ на трета позиция – начало (химикали)+2
#include <алгоритъм>

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - химикали

вектор < низ > химикали = { 'кислород' , 'CO' } ;

cout << „Действителни химикали:“ << endl ;

за ( вътр i = 0 ; i < химикали. размер ( ) ; i ++ )

cout << химикали [ i ] << endl ;



// Вмъкване на елемент на първа позиция

химикали. местоположение ( започвам ( химикали ) , 'манган' ) ;



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

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



// Вмъкване на елемент на трета позиция

химикали. местоположение ( започвам ( химикали ) + 2 , 'сяра' ) ;



cout << ' Крайни химикали:' << endl ;

за ( вътр i = 0 ; i < химикали. размер ( ) ; i ++ )

cout << химикали [ i ] << endl ;

}

Изход:

Сега крайният вектор съдържа пет елемента (предоставени на следващата екранна снимка).

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

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

Синтаксис:

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

Задължително е елементът, който ще бъде добавен към вектора, да бъде подаден като параметър.

Нека добавим два елемента един след друг с помощта на функцията emplace_back().

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

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - химикали

вектор < низ > химикали = { 'кислород' , 'CO' } ;

cout << „Действителни химикали:“ << endl ;

за ( вътр i = 0 ; i < химикали. размер ( ) ; i ++ )

cout << химикали [ i ] << endl ;



// Вмъкнете Manganese в края на вектора

химикали. emplace_back ( 'манган' ) ;



// Вмъкнете Manganese в края на вектора

химикали. emplace_back ( 'мед' ) ;





cout << ' Крайни химикали:' << endl ;

за ( вътр i = 0 ; i < химикали. размер ( ) ; i ++ )

cout << химикали [ i ] << endl ;

}

Изход:

Сега крайният вектор съдържа четири елемента след добавяне на „манган“ и „мед“.

Максимален елемент на вектор

  1. Създайте вектор с някои елементи.
  2. За да намерите максималния елемент, който присъства във вектора, използвайте функцията *max_element(), която приема два итератора като аргументи. Тези два параметъра действат като диапазон и максималният елемент се връща в рамките на предоставения диапазон. Началната позиция е begin(), а последната позиция е end().
* макс_елемент ( първи_индекс, последен_индекс )

Нека разгледаме вектор с име „item_costs“, който съдържа пет стойности от тип цели числа и връща максималния елемент.

#include <вектор>

#include

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

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - item_costs

вектор < вътр > артикули разходи = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Цена на артикулите: ' ;

за ( вътр i = 0 ; i < артикули разходи. размер ( ) ; i ++ )

cout << артикули разходи [ i ] << endl ;



// Връща максималния елемент от горния вектор - item_costs

cout << ' Максимална цена: ' << * макс_елемент ( започвам ( артикули разходи ) ,край ( артикули разходи ) ) ;

}

Изход:

Тук 8900 е максималният елемент сред всички елементи, присъстващи във вектора „item_costs“.

Минимален елемент на вектор

  1. Създайте вектор с някои елементи.
  2. За да намерите минималния елемент, който присъства във вектора, използвайте функцията *min_element(), която приема два итератора като аргументи. Тези два параметъра действат като диапазон и минималният елемент (по-малък от всички останали елементи) се връща в предоставения диапазон. Началната позиция е begin(), а последната позиция е end().
* минимален_елемент ( първи_индекс, последен_индекс )

Използвайте същия вектор, който е създаден, за да намерите максималния елемент и да намерите минималния елемент с помощта на функцията *min_element().

#include <вектор>

#include

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

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - item_costs

вектор < вътр > артикули разходи = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Цена на артикулите: ' ;

за ( вътр i = 0 ; i < артикули разходи. размер ( ) ; i ++ )

cout << артикули разходи [ i ] << endl ;



// Връща минималния елемент от горния вектор - item_costs

cout << ' Минимална цена: ' << * минимален_елемент ( започвам ( артикули разходи ) ,край ( артикули разходи ) ) ;

}

Изход:

Тук 200 е минималният елемент сред всички елементи, които присъстват във вектора „item_costs“.

Сума от елементи във вектор

За да върне сумата от всички елементи, които присъстват във вектора, the натрупвам() използва се функция в C++ STL. Приема три параметъра. Първият параметър взема първия индекс, който представлява началния елемент в диапазона (посочете begin() итератора), а вторият параметър взема последния индекс, който представлява крайния елемент в диапазона (посочете end() итератора). И накрая, трябва да предадем началната стойност на сумата (в нашия случай тя е 0).

натрупвам ( първи_индекс, последен_индекс, начална_вал ) ;

Създайте вектор с име „item_costs“ с пет целочислени елемента и изчислете сумата.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - item_costs

вектор < вътр > артикули разходи = { 8900 , 5677 , 200 , 1000 , 2300 } ;



cout << „Цена на артикулите: ' ;

за ( вътр i = 0 ; i < артикули разходи. размер ( ) ; i ++ )

cout << артикули разходи [ i ] << endl ;



// Връща сумата от всички елементи в горния вектор - item_costs

cout << ' Крайна цена: ' << натрупвам ( започвам ( артикули разходи ) ,край ( артикули разходи ) , 0 ) ;

}

Изход:

Сборът от 8900, 5677, 200, 1000, 2300 е 18077.

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

  1. Създайте два вектора с числов тип и два вектора трябва да са с еднакъв размер (общ брой елементи, присъстващи в първия вектор = общ брой елементи, присъстващи във втория вектор).
  2. Декларирайте нов вектор и използвайте за цикъл , изпълнете операцията за умножение на два елемента във всяка итерация и запазете стойността в създадения вектор с помощта на функцията push_back().
  3. за ( вътр itr = 0 ; i < first_vec. размер ( ) ; itr ++ )

    {

    резултат_вектор. избутвам ( first_vec [ itr ] * sec_thing [ itr ] ) ;

    }
  4. Покажете елементите, които присъстват в резултантния вектор, като го итерирате.

Създайте вектор с име „item_costs“ с пет целочислени елемента и изчислете сумата.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на два вектора - products1 и products2 с по 5 елемента

вектор < вътр > продукти1 = { 10 , двадесет , 30 , 40 , петдесет } ;

вектор < вътр > продукти2 = { петдесет , 40 , 30 , 70 , 60 } ;



вектор < вътр > резултат_продукти ;



// Извършва умножение по елементи

за ( вътр i = 0 ; i < продукти1. размер ( ) ; i ++ ) {

резултат_продукти. избутвам ( продукти1 [ i ] * продукти2 [ i ] ) ;

}



// Показване на резултантния вектор

cout << „Векторно умножение: ' ;

за ( вътр рез : резултат_продукти )

cout << рез << endl ;

}

Изход:

Повторение - 1 : 10 * петдесет => 500

Повторение - 2 : двадесет * 40 => 800

Повторение - 3 : 30 * 30 => 900

Повторение - 4 : 40 * 70 => 2800

Повторение - 5 : петдесет * 60 => 3000

Точково произведение на два вектора

В случай на C++ вектори, точковият продукт се дефинира като „сума от продуктите на съответните записи на двете последователности от вектори“.

Синтаксис:

вътрешен продукт ( Vector1 първи, Vector1 последен, Vector2 първи, Initial_Val )

Използвайте функцията inner_product(), за да върнете точковия продукт. Тази функция приема четири задължителни параметъра.

Тук:

  1. Първият параметър се отнася до итератор, който сочи към началото на първия вектор (посочете с помощта на функцията begin().
  2. Вторият параметър се отнася до итератор, който сочи към края на първия вектор (посочете с функцията end()).
  3. Третият параметър се отнася до итератор, който сочи към началото на втория вектор (посочете с помощта на функцията begin().
  4. Първоначалната стойност трябва да бъде предадена като последен параметър, който е цяло число за натрупване на точковия продукт.

Използвайте същата програма, която е създадена за умножението на два вектора, и използвайте функцията innsr_product(), за да намерите точковия продукт на двата вектора.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на два вектора - products1 и products2 с по 5 елемента

вектор < вътр > продукти1 = { 10 , двадесет , 30 , 40 , петдесет } ;

вектор < вътр > продукти2 = { петдесет , 40 , 30 , 70 , 60 } ;



// Показване на резултантния вектор

cout << „Точка продукт на продукти1 и продукти2:“ ;

cout << вътрешен продукт ( започвам ( продукти1 ) ,край ( продукти1 ) ,започнете ( продукти2 ) , 0 ) ;

}

Изход:

( 10 * петдесет ) + ( двадесет * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( петдесет * 60 )

=> 500 + 800 + 900 + 2800 + 3000

=> 8000

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

Има много начини за преобразуване на набор във вектор чрез предаване на всички елементи, които са повдигнати в набор във вектор. Най-добрият и прост начин е да използвате функцията std::copy().

Синтаксис

std :: копие ( sourceIterator първи, sourceIterator последен, destinationIterator първи )

Използвай std::copy() функция, която вмъква елементите от набор във вектора. Отнема три параметъра.

Тук:

  1. Първият параметър се отнася до изходния итератор, който сочи към първия елемент в итератора. Тук set е итераторът на източника, който е указан с помощта на функцията begin().
  2. По подобен начин вторият параметър сочи към последния елемент (функция end().
  3. Третият параметър се отнася до целевия итератор, който сочи към първия елемент (посочен чрез функцията begin()) в итератора.

Нека създадем набор с пет ученика и копираме всички елементи във вектор, използвайки предишната функция.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на набор - ученици с 5 елемента

комплект < низ > студенти = { 'Сраван' , 'Боби' , 'Мадху' , 'Мегана' , 'Лаваня' } ;

cout << 'Комплект: ' ;

за ( низ i : студенти )

cout << i << endl ;



// Създаване на вектор - student_vcof размер, равен на размера на набора

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



// Вмъкване на елементи от Set - students във Vector - student_vc.

копие ( студенти. започвам ( ) , студенти. край ( ) , student_vc. започвам ( ) ) ;



cout << ' вектор: ' ;

за ( низ i : student_vc )

cout << i << endl ;

}

Изход:

Сега всички елементи, които присъстват в набора „Студенти“, се копират във вектора „students_vc“.

Премахнете дублиращите се елементи

  1. Първо, трябва да сортираме елементите във вектора, така че всички дублиращи се елементи да бъдат съседни един на друг, използвайки std::sort() функция.
  2. std :: вид ( Вектор първи, вектор последен ) ;
  3. Използвайте функцията std::unique(), така че дублиращите се елементи да бъдат избрани. В същото време използвайте функцията erase(), за да премахнете дубликатите, които се връщат от функцията std::unique(). Редът на елементите може да се промени в крайния вектор.
  4. вектор. изтрива ( std :: единствен по рода си ( Вектор първи, вектор последен ) , Последен вектор ) )

Създайте вектора „ученици“ с 10 елемента и върнете вектора, като премахнете дубликатите.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - ученици с 10 елемента

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

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

cout << „Ученици: ' ;

за ( низ i : студенти )

cout << i << ' ' ;



// Сортиране на всички елементи във вектора на учениците.

вид ( започвам ( студенти ) , край ( студенти ) ) ;



// Използвайте функцията unique(), за да премахнете дубликатите с функцията erase().

студенти. изтрива ( единствен по рода си ( започвам ( студенти ) , край ( студенти ) ) , край ( студенти ) ) ;



cout << ' Уникални студенти: ' ;

за ( Автоматичен itr = cbegin ( студенти ) ; itr ! = няколко ( студенти ) ; ++ itr ) {

cout << * itr << ' ' ;

}

}

Изход:

Сега всички елементи са уникални във вектора.

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

Наборът не позволява дублиращи се елементи. Ако пишете, за да вмъкнете вектор в набор с дубликати, те ще бъдат игнорирани. Използваме същата функция std::copy(), която беше използвана в предишния сценарий, който преобразува набора във вектор.

В този сценарий:

  1. Първият параметър приема вектора като изходен итератор, който е указан с помощта на функцията begin().
  2. Вторият параметър приема вектора като изходен итератор, който е посочен с помощта на функцията end().
  3. Предайте функцията std::inserter(), която се използва за презаписване/копиране на елементите автоматично на конкретна позиция в набора, като предоставите набора и итератора, които сочат към края на набора като параметри.

Нека създадем вектор с 10 цели числа и копираме елементите в набор.

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на набор - марки с 10 стойности

вектор < вътр > марки = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;

cout << „Вектор: ' ;

за ( вътр i : марки )

cout << i << ' ' ;



// Създаване на набор - marks_set с размер, равен на размера на вектора

комплект < вътр > марки_набор ;



// Вмъкване на елементи от Set - students във Vector - student_vc.

копие ( започвам ( марки ) ,край ( марки ) , вмъкващ ( marks_set,край ( марки_набор ) ) ) ;



cout << ' Комплект: ' ;

за ( вътр i : марки_набор )

cout << i << ' ' ;

}

Изход:

Съществуващият вектор с име „marks“ има 10 стойности. След копирането му в набора „marks_set“, той съдържа само шест елемента, защото останалите четири елемента са дублирани.

Премахнете празните низове

Не се използват празни низове, които присъстват във вектор. Добра практика е да премахнете празните низове, които присъстват във вектора. Нека видим как да премахнем празните низове от C++ вектора:

  1. Повторете вектора, като използвате цикъла „for“.
  2. При всяка итерация проверете дали елементът е празен („”) или не използвате оператора „==” с член-функцията at().
  3. С помощта на функцията std::erase() премахнете празните низове след проверка на предишното условие.
  4. Повторете стъпка 2 и стъпка 3 до края на вектора.

Нека създадем вектора „компании“ с 10 низа. Сред тях пет са празни и ние ги премахваме чрез прилагане на предишния подход.

#include

#include <вектор>

използвайки пространство от имена std ;

основен ( ) {



вектор < низ > компании { 'Фирма-А' , '' , 'Фирма-Б' ,

'' , 'Компания-С' , '' , 'Фирма-Д' , '' , '' , '' } ;



// Итерация на компании

// и премахване на празни елементи с помощта на erase()

за ( вътр itr = 1 ; itr < компании. размер ( ) ; ++ itr ) {

ако ( компании. при ( itr ) == '' ) {

компании. изтрива ( компании. започвам ( ) + itr ) ;

-- itr ;

}
}

// Показване на вектора


за ( Автоматичен и i : компании ) {

cout << i << endl ;

}

}

Изход:

Сега векторът „компании“ съдържа непразните низове.

Напишете вектор в текстов файл

Нека обсъдим как да напишем всички елементи, които присъстват във вектор във файл, като използваме векторните индекси, използвайки fstream .

  1. Поставете някои елементи в него с помощта на функцията push_back след инициализиране на вектора.
  2. Използвайте функцията open() от библиотеката 'fstream' с режима out.
  3. Обходете всеки елемент, който присъства във вектора, като използвате индексите в цикъл „for“ и запишете всеки елемент в предоставения файл.
  4. Накрая затворете файла.

Нека приложим предишния подход, като изпълним C++ код.

#include <вектор>

#include <низ>

#include

#include

използвайки пространство от имена std ;

основен ( )

{

// Създаване на вектор - v_data

// и пъхнете два елемента в него.

вектор < низ > v_data ;

    v_data. избутвам ( 'Добре дошли' ) ;

    v_data. избутвам ( 'към LinuxHint' ) ;

поток f ;



// Отворете файла

f. отворен ( 'написан_файл.txt' ,ios_base :: навън ) ;

// Повторете всеки елемент от вектора и запишете във файла един по един.

за ( вътр i = 0 ; i < v_data. размер ( ) ; i ++ )

{

f << v_data [ i ] << endl ;

}

// Затваряне на файла

f. близо ( ) ;

}

Изход:

Векторът „v_data“ съдържа два елемента и се създава файл в пътя, където се изпълнява програмата с елементите, които присъстват във вектора.

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

Научихме как да записваме елементите, които присъстват във вектора, в текстов файл. Тук нека създадем вектор от съдържанието, което присъства в текстовия файл.

  1. Създайте „ ifstream” променлива, която се използва за четене на информацията от текстовия файл, в който създаваме вектора от файла.
  2. Създайте празен вектор за съхраняване на съдържанието на файла и използвайте празна низова променлива като флаг за проверка на края на файла.
  3. Прочетете следващия ред от файла, докато стигне до края (основно използвайки цикъла „while“). Използвайте функцията push_back(), за да прочетете следващия ред и да го натиснете във вектора.
  4. Покажете реда, който присъства в реда, отделно, за да видите елементите, които присъстват във вектора на конзолата.

Нека приложим предишния подход, като изпълним C++ кода. Нека разгледаме файла „data.txt“ със следното съдържание. Тук името на вектора е „v_data“.

#include

използвайки пространство от имена std ;

основен ( )

{

// Отворете текстовия файл - данни
ifstream файл ( 'data.txt' ) ;

// Създаване на вектор - v_data от тип - низ


вектор < низ > v_data ;

прашка беше ;

// Прочетете следващия ред от data.txt
// докато стигне до края.


докато ( файл >> беше ) {

// Прочетете следващия ред и натиснете във v_data

        v_data. избутвам ( беше ) ;

}



// Показване на присъстващия ред в реда отделно.

копие ( v_data. започвам ( ) , v_data. край ( ) , ostream_iterator < низ > ( cout , ' ' ) ) ;

}

Изход:

Можем да видим, че „v_data“ съдържа пет елемента, които идват от файла.

Заключение

В тази дълга статия проучихме всички възможни примери, които се използват в приложения в реално време, свързани с вектори в езика за програмиране C++. Всеки пример е обяснен със синтаксис, параметри и пример с изход. Във всеки код се добавят коментари, за да получите ясно разбиране на кода.