Вектор в 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;
}

Изход:

Модификатори

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

Модификатори

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

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

Изход:

Модификатори

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

Модификатори

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

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

Изход:

Капацитет

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

Капацитет

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

  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. Край на тялото на функцията main().

Oбобщение

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

Обобщете тази публикация с: