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

Что такое C++ Вектор?

A C++ вектор представляет собой динамический массив, способный автоматически изменять свой размер. Изменение размера происходит после добавления или удаления элемента из вектора. Хранение осуществляется контейнером автоматически. Элементы вектора хранятся в непрерывном хранилище. Это позволяет C++ программисты могут получать доступ к элементам вектора и перемещаться по ним с помощью итераторов.

Вставка новых данных в вектор выполняется в его конце. Это требует разного времени. Удаление элемента из вектора занимает постоянное время. Причина в том, что нет необходимости изменять размер вектора. Вставка или удаление элемента в начале вектора занимает линейное время.

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

A C++ Вектор следует использовать при следующих обстоятельствах:

  • При работе с элементами данных, которые постоянно изменяются.
  • Если размер данных неизвестен до начала, вектор не потребует от вас установки максимального размера контейнера.

Как инициализировать векторы в C++

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

vector <data-type> name (items)
  • Как показано выше, мы начинаем с ключевого слова вектор.
  • Тип данных — это тип данных элементов, которые будут храниться в векторе.
  • Имя — это имя вектора или элементов данных.
  • Элементы обозначают количество элементов для данных вектора. Этот параметр является необязательным.

итераторы

Цель итераторов — помочь нам получить доступ к элементам, хранящимся в векторе. Это объект, который работает как указатель. Вот общие итераторы, поддерживаемые C++ векторы:

  • вектор:: начало(): он дает итератор, указывающий на первый элемент вектора.
  • вектор:: конец(): он дает итератор, указывающий на последний элемент вектора.
  • вектор::cbegin(): это то же самое, что и вектор::begin(), но у него нет возможности изменять элементы.
  • вектор::cend(): это то же самое, что и вектор::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() и вектор::end().
  11. Выведите значения, на которые указывает переменная итератора an, на консоли для каждой итерации.
  12. Напечатайте текст на консоли. \n — это символ новой строки, перемещающий курсор на новую строку для печати оттуда.
  13. Используйте переменную-итератор для перебора элементов векторных чисел от начала до элемента за концом. Обратите внимание, что мы используем итераторы Vector::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 элементов в векторных числах. Каждый со значением 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. Конец тела функции main().

Необходимый кадровый потенциал

Используйте следующие функции, чтобы определить емкость вектора:

  • Размер() -Он возвращает количество элементов в векторе.
  • Макс_размер() -Он возвращает наибольшее количество элементов, которые может хранить вектор.
  • Емкость () –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().

Итого

  • A C++ вектор — это динамический массив, способный автоматически изменять свой размер при добавлении или удалении из него элемента.
  • Хранение вектора автоматически обрабатывается контейнером.
  • Элементы вектора хранятся в непрерывном хранилище, чтобы к ним можно было получить доступ, а затем пройти их с помощью итераторов.
  • Вставка новых данных в вектор выполняется в его конце.
  • Вставка данных в вектор занимает разное время.
  • Удаление элемента из вектора занимает постоянное время.
  • Вставка или удаление элемента в начале занимает линейное время.
  • Векторы следует использовать при работе с элементами данных, которые постоянно изменяются.
  • Кроме того, вы можете использовать векторы, если размер данных неизвестен до начала.