Вектор в C++ Стандартна библиотека с шаблони (STL) с пример
Какво е C++ Вектор?
A C++ Вектор е динамичен масив, който може да се преоразмерява автоматично. Преоразмеряването се извършва след добавяне или изтриване на елемент от вектора. Съхранението се обработва автоматично от контейнера. Елементите на вектор се съхраняват в непрекъснато хранилище. Това позволява C++ програмисти за достъп и преминаване през векторните елементи с помощта на итератори.
Вмъкването на нови данни във вектор се извършва в края му. Това отнема различно време. Премахването на елемент от вектор отнема постоянно време. Причината е, че няма нужда да преоразмерявате вектора. Вмъкването или изтриването на елемент в началото на вектора отнема линейно време.
Кога да използваме вектор?
A C++ вектор трябва да се използва при следните обстоятелства:
- Когато работите с елементи от данни, които се променят последователно.
- Ако размерът на данните не е известен преди началото, векторът няма да изисква да зададете максималния размер на контейнера.
Как да инициализирате вектори в C++
Синтаксисът на векторите в C++ е:
vector <data-type> name (items)
- Както е показано по-горе, започваме с ключовата дума vector.
- Типът данни е типът данни на елементите, които трябва да се съхраняват във вектора.
- Името е името на вектора или елементите от данни.
- Елементите обозначават броя на елементите за данните на вектора. Този параметър не е задължителен.
Итератори
Целта на итераторите е да ни помогнат да осъществим достъп до елементите, които се съхраняват във вектор. Това е обект, който работи като указател. Ето често срещаните итератори, поддържани от C++ вектори:
- вектор:: начало(): дава итератор, който сочи към първия елемент на вектора.
- вектор :: край (): той дава итератор, който сочи към последния елемент на вектора.
- вектор::cbegin(): същото е като vector::begin(), но няма възможност да променя елементи.
- вектор::cend(): това е същото като vector::end(), но не може да променя векторни елементи.
Модификатори
Модификаторите се използват за промяна на значението на посочения тип данни. Ето често срещаните модификатори в C++:
- вектор :: push_back (): Този модификатор избутва елементите отзад.
- вектор::вмъкване(): За вмъкване на нови елементи във вектор на определено място.
- вектор :: pop_back (): Този модификатор премахва векторните елементи отзад.
- вектор::изтриване(): Използва се за премахване на набор от елементи от определеното място.
- вектор :: ясно (): Той премахва всички векторни елементи.
Пример 1
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> nums;
for (int a = 1; a <= 5; a++)
nums.push_back(a);
cout << "Output from begin and end: ";
for (auto a = nums.begin(); a != nums.end(); ++a)
cout << *a << " ";
cout << "\nOutput from cbegin and cend: ";
for (auto a = nums.cbegin(); a != nums.cend(); ++a)
cout << *a << " ";
return 0;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем в конзолата.
- Включете векторния заглавен файл в нашия код. Това ще ни позволи да работим с вектори в C++.
- Включете пространството от имена std, за да използвате неговите класове и функции, без да го извиквате.
- Извикайте функцията main(), в която трябва да се добави логиката на програмата.
- { маркира началото на тялото на функцията main().
- Декларирайте вектор с име nums, за да съхранявате набор от цели числа.
- Създайте for цикъл, за да ни помогнете да итерираме вектора. Променливата ще ни помогне да итерираме векторните елементи от 1st да 5th елементи.
- Натиснете елементи във вектора num отзад. За всяка итерация това ще добави текущата стойност на променлива a към вектора, който е от 1 до 5.
- Отпечатайте малко текст на конзолата
- Използвайте променлива на итератор a, за да итерирате елементите на векторни номера от началото до елемента след края. Обърнете внимание, че използваме итератори vector::begin() и vector::end().
- Отпечатайте стойностите, посочени от променливата на итератора an на конзолата за всяка итерация.
- Отпечатайте текст на конзолата. \n е знак за нов ред, който премества курсора на новия ред, за да отпечата оттам.
- Използвайте променлива на итератор, за да итерирате елементите на векторни номера от началото до елемента след края. Имайте предвид, че използваме вектор::cbegin() и вектор::cend() итератори.
- Отпечатайте стойностите, посочени от променливата на итератора a на конзолата за всяка итерация.
- Основната функция трябва да върне стойност, ако програмата работи успешно.
- Край на тялото на функцията main().
Пример 2
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> nums;
nums.assign(5, 1);
cout << "Vector contents: ";
for (int a = 0; a < nums.size(); a++)
cout << nums[a] << " ";
nums.push_back(2);
int n = nums.size();
cout << "\nLast element: " << nums[n - 1];
nums.pop_back();
cout << "\nVector contents: ";
for (int a = 0; a < nums.size(); a++)
cout << nums[a] << " ";
nums.insert(nums.begin(), 7);
cout << "\nFirst element: " << nums[0];
nums.clear();
cout << "\nSize after clear(): " << nums.size();
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговите функции.
- Включете векторния заглавен файл в нашия код, за да го използвате функции.
- Включете пространството от имена std, за да използвате неговите класове, без да го извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да бъде добавена в нейното тяло.
- Началото на тялото на функцията main().
- Декларирайте вектор с име nums, за да съхранявате някои цели числа.
- Съхранявайте 5 елемента във вектора nums. Всеки със стойност 1.
- Отпечатайте малко текст на конзолата
- Използвайте променлива на итератор a, за да обхождате елементите на векторни номера.
- Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
- Добавете стойността 2 към края на вектора nums.
- Декларирайте целочислена променлива n, за да съхраните размера на вектора nums.
- Отпечатайте последната стойност на векторни числа заедно с друг текст. Трябва да върне 2.
- Премахнете последния елемент от вектора nums. 2-те ще бъдат премахнати.
- Отпечатайте текст на конзолата. \n премества курсора на новия ред, за да отпечата текста там.
- Използвайте променлива на итератор a, за да обхождате елементите на векторни номера.
- Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
- Вмъкнете стойността 7 в началото на вектора nums.
- Отпечатайте първата стойност на векторни числа заедно с друг текст. Трябва да върне 7.
- Изтрийте всички елементи от вектора nums.
- Отпечатайте размера на вектора num заедно с друг текст след изчистване на цялото съдържание. Трябва да върне 0.
- Край на тялото на функцията main().
Капацитет
Използвайте следните функции, за да определите капацитета на вектор:
- Размер() –Връща броя на елементите във вектор.
- Max_size() -Връща най-големия брой елементи, които един вектор може да съхранява.
- Капацитет () – It връща количеството пространство за съхранение, разпределено за вектор.
- Преоразмеряване () – It преоразмерява контейнера, за да съдържа n елемента. Ако текущият размер на вектора е по-голям от n, задните елементи ще бъдат премахнати от вектора. Ако текущият размер на вектора е по-малък от n, в задната част на вектора ще бъдат добавени допълнителни елементи.
- Празно () – it връща true, ако векторът е празен. В противен случай връща false.
Пример 3
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vector1;
for (int x = 1; x <= 10; x++)
vector1.push_back(x);
cout << "Vector size: " << vector1.size()<< endl;
cout << "Vector capacity: " << vector1.capacity() << endl;
cout << "Maximum size of vector: " << vector1.max_size()<< endl;
vector1.resize(5);
cout << "Vector size after resizing: " << vector1.size() << endl;
if (vector1.empty() == false)
cout << "Vector is not empty"<<endl;
else
cout << "Vector is empty"<<endl;
return 0;
}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговата функция.
- Включете векторния заглавен файл в нашия код, за да използвате неговите функции.
- Включете пространството от имена std в нашия код, за да използвате неговите класове, без да го извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
- Създайте вектор с име vector1 за съхраняване на цели числа.
- Използвайте for цикъл, за да създадете променлива x със стойности от 1 до 10.
- Поставете стойностите на променливата x във вектора.
- Отпечатайте размера на вектора заедно с друг текст на конзолата.
- Отпечатайте капацитета на вектора заедно с друг текст на конзолата.
- Отпечатайте максималния брой елементи, които векторът може да побере заедно с друг текст на конзолата.
- Преоразмерете вектора, за да съдържа само 5 елемента.
- Отпечатайте новия размер на вектора заедно с друг текст.
- Проверете дали векторът не е празен.
- Отпечатайте текст на конзолата, ако векторът не е празен.
- Използвайте оператор else, за да посочите какво да направите, ако векторът е празен.
- Текст за отпечатване на конзолата, ако векторът е празен.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main().
Oбобщение
- A C++ векторът е динамичен масив, способен автоматично да се преоразмерява, когато елемент се добавя или изтрива от него.
- Съхранението за вектор се обработва автоматично от контейнера.
- Елементите на вектор се съхраняват в непрекъснато хранилище, за да бъдат достъпни и след това обходени с помощта на итератори.
- Вмъкването на нови данни във вектор се извършва в края му.
- Вмъкването на данни във вектор отнема различно време.
- Премахването на елемент от вектор отнема постоянно време.
- Вмъкването или изтриването на елемент в началото отнема линейно време.
- Векторите трябва да се използват, когато се работи с елементи от данни, които се променят последователно.
- Освен това можете да използвате вектори, ако размерът на данните не е известен преди началото.





