Вектор в C++ Стандартна бібліотека шаблонів (STL) із прикладом
⚡ Розумний підсумок
Вектор в C++ — це динамічний масив зі стандартної бібліотеки шаблонів, який автоматично змінює розмір під час додавання або видалення елементів, зберігаючи елементи в безперервній пам'яті, щоб програмісти могли отримувати до них доступ та переміщатися по них за допомогою ітераторів.

Що таке? C++ Вектор?
A C++ Вектор — це динамічний масив, здатний автоматично змінювати розмір. Зміна розміру відбувається після додавання або видалення елемента з вектора. Зберігання автоматично обробляється контейнером. Елементи вектора зберігаються в безперервному сховищі. Це дозволяє C++ програмістам для доступу та проходження векторних елементів за допомогою ітераторів.
Вставка нових даних до вектора виконується в його кінці. Це займає диференціальний час. Видалення елемента з вектора займає постійний час. Причина полягає в тому, що немає потреби змінювати розмір вектора. Вставка або видалення елемента на початку вектора займає лінійний час.
Перш ніж писати код з векторами, корисно знати, коли вони є правильним контейнером для використання.
Коли використовувати вектор?
A C++ вектор слід використовувати за таких обставин:
- При роботі з елементами даних, які постійно змінюються.
- Якщо розмір даних невідомий до початку, вектор не вимагатиме від вас встановлення максимального розміру контейнера.
Як ініціалізувати вектори в C++
Синтаксис векторів в C++ це:
vector <data-type> name (items)
Як показано вище, ми починаємо з ключового слова vector.
- Команда тип даних — це тип даних елементів, які зберігаються у векторі.
- Команда ім'я — це назва вектора або елементів даних.
- Команда пунктів позначає кількість елементів для векторних даних. Цей параметр необов'язковий.
Щойно вектор існує, ітератори надають вам спосіб переміщення по його елементах, подібний до вказівника.
Ітератори
Мета ітераторів — допомогти нам отримати доступ до елементів, що зберігаються у векторі. Це об'єкт, який працює як вказівник. Ось поширені ітератори, що підтримуються... C++ вектори:
- вектор::початок(): він дає ітератор, який вказує на перший елемент вектора.
- вектор::кінець(): він дає ітератор, який вказує на останній елемент вектора.
- вектор::cbegin(): це те саме, що й vector::begin(), але не має можливості змінювати елементи.
- вектор::cend(): це те саме, що й vector::end(), але не може змінювати елементи вектора.
У наступному прикладі вектор заповнюється, а потім він проходить через нього за допомогою змінних та константних ітераторів.
Приклад 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; }
вихід:
Ось скріншот коду:
Code Пояснення:
- Включіть файл заголовка iostream у наш код. Це дозволить нам читати з консолі та писати в неї.
- Включіть векторний файл заголовка в наш код. Це дозволить нам працювати з векторами в C++.
- Включіть простір імен std, щоб використовувати його класи та функції без його виклику.
- Викличте функцію main(), в яку потрібно додати логіку програми.
- { позначає початок тіла функції main().
- Оголошіть вектор з іменем nums для зберігання набору цілих чисел.
- Створіть цикл for, який допоможе нам перебирати вектор. Змінна допоможе нам перебирати елементи вектора, від 1-го до 5-го елементів.
- Вставте елементи у вектор num ззаду. Для кожної ітерації це додасть поточне значення змінної a до вектора, який становить від 1 до 5.
- Надрукуйте текст на консолі.
- Використовуйте змінну ітератора a, щоб перебирати елементи вектора nums від початку до останнього елемента. Зверніть увагу, що ми використовуємо ітератори vector::begin() і vector::end().
- Виведіть значення, на які вказує змінна ітератора a, на консолі для кожної ітерації.
- Надрукуйте текст на консолі. \n — це символ нового рядка, який переміщує курсор на новий рядок для друку звідти.
- Використовуйте змінну-ітератор для перебору елементів вектора nums від початку до елемента після кінця. Зверніть увагу, що ми використовуємо ітератори vector::cbegin() та vector::cend().
- Виведіть значення, на які вказує змінна ітератора a, на консолі для кожної ітерації.
- Функція main має повертати значення, якщо програма виконується успішно.
- Кінець тіла функції main().
Модифікатори
Модифікатори використовуються для зміни значення вказаного типу даних. Ось загальні модифікатори в C++:
- вектор::push_back(): Цей модифікатор виштовхує елементи ззаду.
- вектор::вставити(): Для вставки нових елементів у вектор у вказаному місці.
- vector::pop_back(): Цей модифікатор видаляє векторні елементи зі зворотного боку.
- вектор::стерти(): Використовується для видалення діапазону елементів із зазначеного місця.
- вектор::очистити(): Він видаляє всі векторні елементи.
У наступному прикладі ці модифікатори застосовуються послідовно, щоб побачити, як змінюється вектор.
Приклад 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(); }
вихід:
Ось скріншот коду:
Code Пояснення:
- Включіть файл заголовка iostream у наш код, щоб використовувати його функції.
- Включіть векторний файл заголовка в наш код, щоб використовувати його функції.
- Включіть простір імен std, щоб використовувати його класи без його виклику.
- Виклик функції main(). Логіку програми слід додати в її тіло.
- Початок тіла функції main().
- Оголошіть вектор з іменем nums для зберігання деяких цілих значень.
- Зберігайте 5 елементів у векторі nums. Кожен із значенням 1.
- Надрукуйте текст на консолі.
- Використовуйте змінну ітератора a для повторення елементів вектора nums.
- Виведіть значення векторних номерів на консолі для кожної ітерації.
- Додайте значення 2 до кінця вектора nums.
- Оголошіть цілочисельну змінну n для збереження розміру вектора nums.
- Надрукуйте останнє значення вектора nums поруч з іншим текстом. Він повинен повернути 2.
- Видаліть останній елемент із вектора nums. 2 буде видалено.
- Друк тексту на консолі. \n переміщує курсор на новий рядок, щоб надрукувати там текст.
- Використовуйте змінну ітератора a для повторення елементів вектора nums.
- Виведіть значення векторних номерів на консолі для кожної ітерації.
- Вставте значення 7 на початок вектора nums.
- Надрукуйте перше значення вектора nums поруч з іншим текстом. Він повинен повернути 7.
- Видалити всі елементи з вектора nums.
- Надрукуйте розмір вектора num поряд з іншим текстом після очищення всього вмісту. Він повинен повернути 0.
- Кінець тіла функції main().
Швидкість профілювання
Використовуйте наступне Функції щоб визначити ємність вектора:
- Розмір() – Повертає кількість елементів у векторі.
- Max_size() – Повертає найбільшу кількість елементів, яку може зберігати вектор.
- Місткість() – Повертає обсяг місця для зберігання, виділеного для вектора.
- Змінити розмір() – Змінює розмір контейнера, щоб він містив n елементів. Якщо поточний розмір вектора більший за n, то елементи, що знаходяться позаду, будуть видалені з вектора. Якщо поточний розмір вектора менший за n, то на кінець вектора будуть додані додаткові елементи.
- Порожній() – повертає значення 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; }
вихід:
Ось скріншот коду:
Code Пояснення:
- Включіть файл заголовка iostream у наш код, щоб використовувати його функцію.
- Включіть векторний файл заголовка в наш код, щоб використовувати його функції.
- Включіть простір імен std у наш код, щоб використовувати його класи без його виклику.
- Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
- Створіть вектор з іменем vector1 для зберігання цілих чисел.
- Використовуйте цикл for, щоб створити змінну x зі значеннями від 1 до 10.
- Вставте значення змінної x у вектор.
- Надрукуйте розмір вектора поруч з іншим текстом на консолі.
- Надрукуйте ємність вектора поруч з іншим текстом на консолі.
- Надрукуйте максимальну кількість елементів, які вектор може вмістити поруч з іншим текстом на консолі.
- Змініть розмір вектора, щоб він містив лише 5 елементів.
- Надрукуйте новий розмір вектора поруч з іншим текстом.
- Перевірте, чи вектор не порожній.
- Вивести текст на консолі, якщо вектор не порожній.
- Використовуйте оператор else, щоб вказати, що робити, якщо вектор порожній.
- Текст для друку на консолі, якщо вектор порожній.
- Після успішного завершення програма повинна повернути значення.
- Кінець тіла функції main().





