Вектор в C++ Стандартна библиотека с шаблони (STL) с пример
⚡ Умно обобщение
Вектор в C++ е динамичен масив от библиотеката със стандартни шаблони, който се преоразмерява автоматично при добавяне или премахване на елементи, съхранявайки елементите в непрекъсната памет, така че програмистите да могат да имат достъп до тях и да ги обхождат с помощта на итератори.

Какво е C++ Вектор?
A C++ Векторът е динамичен масив, способен да се самооразмерява автоматично. Преоразмеряването се случва след добавяне или изтриване на елемент от вектора. Съхранението се обработва автоматично от контейнера. Елементите на вектора се съхраняват в непрекъснато хранилище. Това позволява C++ програмисти за достъп и преминаване през векторните елементи с помощта на итератори.
Вмъкването на нови данни във вектор се извършва в неговия край. Това отнема диференциално време. Премахването на елемент от вектор отнема постоянно време. Причината е, че няма нужда да се променя размерът на вектора. Вмъкването или изтриването на елемент в началото на вектора отнема линейно време.
Преди да пишете код с вектори, е полезно да знаете кога те са правилният контейнер, към който да посегнете.
Кога да използваме вектор?
A C++ вектор трябва да се използва при следните обстоятелства:
- Когато работите с елементи от данни, които се променят последователно.
- Ако размерът на данните не е известен преди началото, векторът няма да изисква от вас да задавате максималния размер на контейнера.
Как да инициализирате вектори в C++
Синтаксисът на векторите в C++ е:
vector <data-type> name (items)
Както е показано по-горе, започваме с ключовата дума vector.
- - тип данни е типът данни на елементите, които ще се съхраняват във вектора.
- - име е името на вектора или елементите от данните.
- - елементи обозначава броя на елементите за векторните данни. Този параметър е по избор.
След като векторът съществува, итераторите ви дават начин за придвижване между неговите елементи, подобен на указател.
Итератори
Целта на итераторите е да ни помогнат да осъществим достъп до елементите, съхранени във вектор. Това е обект, който работи като указател. Ето често срещаните итератори, поддържани от C++ вектори:
- вектор::начало(): дава итератор, който сочи към първия елемент на вектора.
- вектор::край(): той дава итератор, който сочи към последния елемент на вектора.
- вектор::cbegin(): Същото е като vector::begin(), но няма възможност за промяна на елементи.
- вектор::cend(): Същото е като vector::end(), но не може да променя векторни елементи.
Следващият пример попълва вектор и след това го обхожда с променливи и константни итератори.
Пример 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; }
Изход:
Ето екранна снимка на кода:
Code Обяснение:
- Включете заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем в конзолата.
- Включете векторния заглавен файл в нашия код. Това ще ни позволи да работим с вектори в C++.
- Включете пространството от имена std, за да използвате неговите класове и функции, без да го извиквате.
- Извикайте функцията main(), в която трябва да се добави логиката на програмата.
- { маркира началото на тялото на функцията main().
- Декларирайте вектор с име nums, за да съхранявате набор от цели числа.
- Създайте цикъл for, който ще ни помогне да итерираме върху вектора. Променливата ще ни помогне да итерираме върху елементите на вектора, от 1-ви до 5-ти елемент.
- Натиснете елементи във вектора num отзад. За всяка итерация това ще добави текущата стойност на променлива a към вектора, който е от 1 до 5.
- Отпечатайте малко текст на конзолата.
- Използвайте променлива на итератор a, за да итерирате елементите на векторни номера от началото до елемента след края. Обърнете внимание, че използваме итератори vector::begin() и vector::end().
- Отпечатайте стойностите, посочени от променливата на итератора a на конзолата за всяка итерация.
- Отпечатайте текст на конзолата. \n е знак за нов ред, който премества курсора на новия ред, за да отпечата оттам.
- Използвайте итераторна променлива, за да итерирате върху елементите на вектор nums от началото до елемента след края. Обърнете внимание, че използваме итератори vector::cbegin() и vector::cend().
- Отпечатайте стойностите, посочени от променливата на итератора a на конзолата за всяка итерация.
- Основната функция трябва да върне стойност, ако програмата работи успешно.
- Край на тялото на функцията main().
Модификатори
Модификаторите се използват за промяна на значението на посочения тип данни. Ето често срещаните модификатори в C++:
- вектор :: push_back (): Този модификатор избутва елементите отзад.
- вектор::вмъкване(): За вмъкване на нови елементи във вектор на определено място.
- вектор :: pop_back (): Този модификатор премахва векторните елементи отзад.
- вектор::изтриване(): Използва се за премахване на набор от елементи от определеното място.
- вектор :: ясно (): Той премахва всички векторни елементи.
Следващият пример прилага тези модификатори последователно, за да види как се променя вектор.
Пример 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(); }
Изход:
Ето екранна снимка на кода:
Code Обяснение:
- Включете заглавния файл на 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() – Връща най-големия брой елементи, които един вектор може да съхрани.
- Капацитет() – Връща количеството пространство за съхранение, разпределено на вектор.
- Преоразмеряване() – Преоразмерява контейнера, за да съдържа n елемента. Ако текущият размер на вектора е по-голям от n, задните елементи ще бъдат премахнати от вектора. Ако текущият размер на вектора е по-малък от n, в задната част на вектора ще бъдат добавени допълнителни елементи.
- Празно() – връща 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; }
Изход:
Ето екранна снимка на кода:
Code Обяснение:
- Включете заглавния файл на iostream в нашия код, за да използвате неговата функция.
- Включете векторния заглавен файл в нашия код, за да използвате неговите функции.
- Включете пространството от имена std в нашия код, за да използвате неговите класове, без да го извиквате.
- Извикайте функцията main(). Логиката на програмата трябва да се добави в тялото на тази функция.
- Създайте вектор с име vector1 за съхраняване на цели числа.
- Използвайте for цикъл, за да създадете променлива x със стойности от 1 до 10.
- Поставете стойностите на променливата x във вектора.
- Отпечатайте размера на вектора заедно с друг текст на конзолата.
- Отпечатайте капацитета на вектора заедно с друг текст на конзолата.
- Отпечатайте максималния брой елементи, които векторът може да побере заедно с друг текст на конзолата.
- Преоразмерете вектора, за да съдържа само 5 елемента.
- Отпечатайте новия размер на вектора заедно с друг текст.
- Проверете дали векторът не е празен.
- Отпечатайте текст на конзолата, ако векторът не е празен.
- Използвайте оператор else, за да посочите какво да направите, ако векторът е празен.
- Текст за отпечатване на конзолата, ако векторът е празен.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main().





