Какво е C ++ вектор?
A C ++ VECTOR е динамичен масив способен да се преоразмеряване автоматично. Преоразмеряването се извършва, след като елемент е добавен или изтрит от вектора. Съхранението се обработва автоматично от контейнера. Елементите на вектор се съхраняват в съседно съхранение. Това позволява на програмистите на C ++ да имат достъп и да преминават през векторните елементи с помощта на итератори.
Вмъкването на нови данни във вектор се извършва в края му. Това отнема различно време. Премахването на елемент от вектор отнема постоянно време. Причината е, че няма нужда да преоразмерявате вектора. Вмъкването или изтриването на елемент в началото на вектора отнема линейно време.
В този урок за C ++ ще научите:
- Какво е C ++ вектор?
- Кога да използвам вектор?
- Как да инициализирам вектори в C ++
- Итератори
- Модификатори
- Пример 1
- Пример 2
- Капацитет
- Пример 3
Кога да използвам вектор?
C ++ вектор трябва да се използва при следните обстоятелства:
- Когато се занимавате с елементи на данни, които се променят последователно.
- Ако размерът на данните не е известен преди началото, векторът няма да изисква от вас да зададете максималния размер на контейнера.
Как да инициализирам вектори в C ++
Синтаксисът на вектори в C ++ е:
vectorname (items)
- Както е показано по-горе, започваме с ключовата дума vector.
- Типът данни е типът данни на елементите, които трябва да се съхраняват във вектора.
- Името е името на вектора или елементите на данните.
- Елементите означават броя на елементите за данните на вектора. Този параметър не е задължителен.
Итератори
Целта на итераторите е да ни помогнат да получим достъп до елементите, които се съхраняват във вектор. Това е обект, който работи като указател. Ето общите итератори, поддържани от вектори на C ++:
- vector :: begin (): дава итератор, който сочи към първия елемент на вектора.
- vector :: end (): дава итератор, който сочи към елемента на миналия край на вектора.
- vector :: cbegin (): това е същото като vector :: begin (), но няма способността да модифицира елементи.
- vector :: cend (): това е същото като vector :: end (), но не може да променя векторни елементи.
Модификатори
Модификаторите се използват за промяна на значението на посочения тип данни. Ето общите модификатори в C ++:
- vector :: push_back (): Този модификатор изтласква елементите отзад.
- vector :: insert (): За вмъкване на нови елементи във вектор на определено място.
- vector :: pop_back (): Този модификатор премахва векторните елементи отзад.
- vector :: erase (): Използва се за премахване на набор от елементи от посоченото местоположение.
- vector :: clear (): Премахва всички векторни елементи.
Пример 1
#include#include using namespace std;int main(){vector 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 (), в която трябва да се добави логиката на програмата.
- {Маркира началото на тялото на основната () функция.
- Декларирайте вектор с име nums, за да съхраните набор от цели числа.
- Създайте цикъл for, за да ни помогнете да прегледаме вектора. Променливата ще ни помогне да прегледаме векторните елементи, от 1- ви до 5 -ти елементи.
- Натиснете елементи във векторния номер отзад. За всяка итерация това ще добави текущата стойност на променлива a към вектора, която е от 1 до 5.
- Отпечатайте малко текст на конзолата
- Използвайте итераторна променлива a, за да прегледате елементите на векторни числа от началото до края на елемента. Забележете, че използваме итератори vector :: begin () и vector :: end ().
- Отпечатайте стойностите, посочени от итераторна променлива а на конзолата за всяка итерация.
- Отпечатайте малко текст на конзолата. \ N е нов ред знак, премествайки курсора на новия ред, за да отпечатате от там.
- Използвайте итераторна променлива, за да прегледате елементите на векторни числа от началото до края на елемента. Забележете, че използваме итератори vector :: cbegin () и vector :: cend ().
- Отпечатайте стойностите, посочени от итераторна променлива a на конзолата за всяка итерация.
- Основната функция трябва да върне стойност, ако програмата работи успешно.
- Край на тялото на основната () функция.
Пример 2
#include#include using namespace std;int main(){vector 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 (). Логиката на програмата трябва да бъде добавена вътре в нейното тяло.
- Началото на тялото на основната () функция.
- Декларирайте вектор с име nums, за да съхраните някои цели числа.
- Съхранявайте 5 елемента във векторните числа. Всеки със стойност 1.
- Отпечатайте малко текст на конзолата
- Използвайте итераторна променлива a, за да прегледате елементите на векторни числа.
- Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
- Добавете стойността 2 в края на векторните числа.
- Декларирайте цяло число променлива n, за да съхранявате размера на векторните номера.
- Отпечатайте последната стойност на векторни номера заедно с друг текст. Трябва да върне 2.
- Премахнете последния елемент от векторните номера. 2-те ще бъдат премахнати.
- Отпечатайте текст на конзолата. \ N премества курсора на новия ред, за да отпечата текста там.
- Използвайте итераторна променлива a, за да прегледате елементите на векторни числа.
- Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
- Вмъкнете стойността 7 в началото на векторните номера.
- Отпечатайте първата стойност на векторни числа заедно с друг текст. Трябва да се върне 7.
- Изтрийте всички елементи от векторните номера.
- Отпечатайте размера на векторния номер заедно с друг текст, след като изчистите цялото съдържание. Трябва да върне 0.
- Край на тялото на основната () функция.
Капацитет
Използвайте следните функции, за да определите капацитета на вектор:
- Size () - Връща броя на елементите във вектор.
- Max_size () -Връща най-големия брой елементи, които вектор може да съхрани.
- Капацитет () - Връща количеството място за съхранение, разпределено на вектор.
- Resize () - Преоразмерява контейнера, за да съдържа n елемента. Ако текущият размер на вектора е по-голям от n, елементите отзад ще бъдат премахнати от вектора. Ако текущият размер на вектора е по-малък от n, допълнителни елементи ще бъдат добавени към гърба на вектора.
- Empty () -i t връща true, ако векторът е празен, в противен случай връща false.
Пример 3
#include#include using namespace std;int main() {vector 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"< Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговата функция.
- Включете векторния заглавен файл в нашия код, за да използвате неговите функции.
- Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте вектор с име vector1 за съхраняване на цели числа.
- Използвайте цикъл for, за да създадете променлива x със стойности от 1 до 10.
- Натиснете стойностите на променлива x във вектора.
- Отпечатайте размера на вектора заедно с другия текст на конзолата.
- Отпечатайте капацитета на вектора заедно с друг текст на конзолата.
- Отпечатайте максималния брой елементи, които векторът може да побере заедно с друг текст на конзолата.
- Преоразмерете вектора, за да побере само 5 елемента.
- Отпечатайте новия размер на вектора заедно с друг текст.
- Проверете дали векторът не е празен.
- Отпечатайте текст на конзолата, ако векторът не е празен.
- Използвайте инструкция else, за да посочите какво да правите, ако векторът е празен.
- Текст за отпечатване на конзолата, ако векторът е празен.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на основната () функция.
Резюме:
- Векторът C ++ е динамичен масив, способен автоматично да преоразмерява, когато елемент е добавен или изтрит от него.
- Съхранението за вектор се обработва автоматично от контейнера.
- Елементите на вектор се съхраняват в непрекъснато съхранение, за да бъдат достъпни и след това преминати с помощта на итератори.
- Вмъкването на нови данни във вектор се извършва в края му.
- Вмъкването на данни във вектор отнема различно време.
- Премахването на елемент от вектор отнема постоянно време.
- Вмъкването или изтриването на елемент в началото отнема линейно време.
- Векторите трябва да се използват при работа с елементи на данни, които се променят последователно.
- Също така можете да използвате вектори, ако размерът на данните не е известен преди началото.