Вектор в библиотеката на стандартните шаблони на C ++ (STL) с пример

Съдържание:

Anonim

Какво е C ++ вектор?

A C ++ VECTOR е динамичен масив способен да се преоразмеряване автоматично. Преоразмеряването се извършва, след като елемент е добавен или изтрит от вектора. Съхранението се обработва автоматично от контейнера. Елементите на вектор се съхраняват в съседно съхранение. Това позволява на програмистите на C ++ да имат достъп и да преминават през векторните елементи с помощта на итератори.

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

В този урок за C ++ ще научите:

  • Какво е C ++ вектор?
  • Кога да използвам вектор?
  • Как да инициализирам вектори в C ++
  • Итератори
  • Модификатори
  • Пример 1
  • Пример 2
  • Капацитет
  • Пример 3

Кога да използвам вектор?

C ++ вектор трябва да се използва при следните обстоятелства:

  • Когато се занимавате с елементи на данни, които се променят последователно.
  • Ако размерът на данните не е известен преди началото, векторът няма да изисква от вас да зададете максималния размер на контейнера.

Как да инициализирам вектори в C ++

Синтаксисът на вектори в C ++ е:

vector  name (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;}

Изход:

Ето екранна снимка на кода:

Обяснение на кода:

  1. Включете заглавния файл на iostream в нашия код. Това ще ни позволи да четем от и да пишем на конзолата.
  2. Включете векторния заглавен файл в нашия код. Това ще ни позволи да работим с вектори в C ++.
  3. Включете std пространството от имена, за да използвате класовете и функциите му, без да го извиквате.
  4. Извикайте функцията main (), в която трябва да се добави логиката на програмата.
  5. {Маркира началото на тялото на основната () функция.
  6. Декларирайте вектор с име nums, за да съхраните набор от цели числа.
  7. Създайте цикъл for, за да ни помогнете да прегледаме вектора. Променливата ще ни помогне да прегледаме векторните елементи, от 1- ви до 5 -ти елементи.
  8. Натиснете елементи във векторния номер отзад. За всяка итерация това ще добави текущата стойност на променлива a към вектора, която е от 1 до 5.
  9. Отпечатайте малко текст на конзолата
  10. Използвайте итераторна променлива a, за да прегледате елементите на векторни числа от началото до края на елемента. Забележете, че използваме итератори vector :: begin () и vector :: end ().
  11. Отпечатайте стойностите, посочени от итераторна променлива а на конзолата за всяка итерация.
  12. Отпечатайте малко текст на конзолата. \ N е нов ред знак, премествайки курсора на новия ред, за да отпечатате от там.
  13. Използвайте итераторна променлива, за да прегледате елементите на векторни числа от началото до края на елемента. Забележете, че използваме итератори vector :: cbegin () и vector :: cend ().
  14. Отпечатайте стойностите, посочени от итераторна променлива a на конзолата за всяка итерация.
  15. Основната функция трябва да върне стойност, ако програмата работи успешно.
  16. Край на тялото на основната () функция.

Пример 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();}

Изход:

Ето екранна снимка на кода:

Обяснение на кода:

  1. Включете заглавния файл на iostream в нашия код, за да използвате неговите функции.
  2. Включете векторния заглавен файл в нашия код, за да използвате неговите функции.
  3. Включете std пространството от имена, за да използвате класовете му, без да го извиквате.
  4. Извикайте функцията main (). Логиката на програмата трябва да бъде добавена вътре в нейното тяло.
  5. Началото на тялото на основната () функция.
  6. Декларирайте вектор с име nums, за да съхраните някои цели числа.
  7. Съхранявайте 5 елемента във векторните числа. Всеки със стойност 1.
  8. Отпечатайте малко текст на конзолата
  9. Използвайте итераторна променлива a, за да прегледате елементите на векторни числа.
  10. Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
  11. Добавете стойността 2 в края на векторните числа.
  12. Декларирайте цяло число променлива n, за да съхранявате размера на векторните номера.
  13. Отпечатайте последната стойност на векторни номера заедно с друг текст. Трябва да върне 2.
  14. Премахнете последния елемент от векторните номера. 2-те ще бъдат премахнати.
  15. Отпечатайте текст на конзолата. \ N премества курсора на новия ред, за да отпечата текста там.
  16. Използвайте итераторна променлива a, за да прегледате елементите на векторни числа.
  17. Отпечатайте стойностите на векторни номера на конзолата за всяка итерация.
  18. Вмъкнете стойността 7 в началото на векторните номера.
  19. Отпечатайте първата стойност на векторни числа заедно с друг текст. Трябва да се върне 7.
  20. Изтрийте всички елементи от векторните номера.
  21. Отпечатайте размера на векторния номер заедно с друг текст, след като изчистите цялото съдържание. Трябва да върне 0.
  22. Край на тялото на основната () функция.

Капацитет

Използвайте следните функции, за да определите капацитета на вектор:

  • 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"<

Изход:

Ето екранна снимка на кода:

Обяснение на кода:

  1. Включете заглавния файл на iostream в нашия код, за да използвате неговата функция.
  2. Включете векторния заглавен файл в нашия код, за да използвате неговите функции.
  3. Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
  4. Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
  5. Създайте вектор с име vector1 за съхраняване на цели числа.
  6. Използвайте цикъл for, за да създадете променлива x със стойности от 1 до 10.
  7. Натиснете стойностите на променлива x във вектора.
  8. Отпечатайте размера на вектора заедно с другия текст на конзолата.
  9. Отпечатайте капацитета на вектора заедно с друг текст на конзолата.
  10. Отпечатайте максималния брой елементи, които векторът може да побере заедно с друг текст на конзолата.
  11. Преоразмерете вектора, за да побере само 5 елемента.
  12. Отпечатайте новия размер на вектора заедно с друг текст.
  13. Проверете дали векторът не е празен.
  14. Отпечатайте текст на конзолата, ако векторът не е празен.
  15. Използвайте инструкция else, за да посочите какво да правите, ако векторът е празен.
  16. Текст за отпечатване на конзолата, ако векторът е празен.
  17. Програмата трябва да върне стойност при успешно завършване.
  18. Край на тялото на основната () функция.

Резюме:

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