Вектор в 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(): Цей модифікатор виштовхує елементи ззаду.
  • вектор::вставити(): Для вставки нових елементів у вектор у вказаному місці.
  • vector::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, щоб перебирати елементи вектора nums від початку до останнього елемента. Зверніть увагу, що ми використовуємо ітератори vector::begin() і vector::end().
  11. Виведіть значення, на які вказує змінна ітератора an, на консолі для кожної ітерації.
  12. Надрукуйте текст на консолі. \n — це символ нового рядка, який переміщує курсор на новий рядок для друку звідти.
  13. Використовуйте змінну ітератора, щоб перебирати елементи вектора nums від початку до останнього елемента. Зверніть увагу, що ми використовуємо ітератори vector::cbegin() і vector::cend().
  14. Виведіть значення, на які вказує змінна ітератора a, на консолі для кожної ітерації.
  15. Функція main має повертати значення, якщо програма виконується успішно.
  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 для повторення елементів вектора nums.
  10. Виведіть значення векторних номерів на консолі для кожної ітерації.
  11. Додайте значення 2 до кінця вектора nums.
  12. Оголошіть цілочисельну змінну n для збереження розміру вектора nums.
  13. Надрукуйте останнє значення вектора nums поруч з іншим текстом. Він повинен повернути 2.
  14. Видаліть останній елемент із вектора nums. 2 буде видалено.
  15. Друк тексту на консолі. \n переміщує курсор на новий рядок, щоб надрукувати там текст.
  16. Використовуйте змінну ітератора a для повторення елементів вектора nums.
  17. Виведіть значення векторних номерів на консолі для кожної ітерації.
  18. Вставте значення 7 на початок вектора nums.
  19. Надрукуйте перше значення вектора nums поруч з іншим текстом. Він повинен повернути 7.
  20. Видалити всі елементи з вектора nums.
  21. Надрукуйте розмір вектора num поряд з іншим текстом після очищення всього вмісту. Він повинен повернути 0.
  22. Кінець тіла функції main().

потужність

Щоб визначити ємність вектора, використовуйте такі функції:

  • Розмір() –Він повертає кількість елементів у векторі.
  • Max_size() -Він повертає найбільшу кількість елементів, які може зберігати вектор.
  • Ємність () – It повертає обсяг пам’яті, виділений для вектора.
  • Змінити розмір () – It змінює розмір контейнера, щоб він містив n елементів. Якщо поточний розмір вектора більший за n, задні елементи буде видалено з вектора. Якщо поточний розмір вектора менший за n, до задньої частини вектора буде додано додаткові елементи.
  • Порожній () –іt повертає 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++ вектор — це динамічний масив, здатний автоматично змінювати свій розмір, коли елемент додається або видаляється з нього.
  • Зберігання вектора автоматично обробляється контейнером.
  • Елементи вектора зберігаються в безперервному сховищі, щоб отримати до них доступ, а потім пройти їх за допомогою ітераторів.
  • Вставка нових даних у вектор виконується в його кінці.
  • Вставка даних у вектор займає різний час.
  • Видалення елемента з вектора займає постійний час.
  • Вставка або видалення елемента на початку займає лінійний час.
  • Вектори слід використовувати при роботі з елементами даних, які постійно змінюються.
  • Крім того, ви можете використовувати вектори, якщо розмір даних не відомий до початку.