Вектор в 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; }
вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка iostream у наш код. Це дозволить нам читати з консолі та писати в неї.
- Включіть векторний файл заголовка в наш код. Це дозволить нам працювати з векторами в C++.
- Включіть простір імен std, щоб використовувати його класи та функції без його виклику.
- Викличте функцію main(), в яку потрібно додати логіку програми.
- { позначає початок тіла функції main().
- Оголошіть вектор з іменем nums для зберігання набору цілих чисел.
- Створіть цикл for, щоб допомогти нам перебирати вектор. Змінна допоможе нам перебирати векторні елементи, починаючи з 1st в 5th елементи.
- Вставте елементи у вектор num ззаду. Для кожної ітерації це додасть поточне значення змінної a до вектора, який становить від 1 до 5.
- Надрукуйте текст на консолі
- Використовуйте змінну ітератора a, щоб перебирати елементи вектора nums від початку до останнього елемента. Зверніть увагу, що ми використовуємо ітератори vector::begin() і vector::end().
- Виведіть значення, на які вказує змінна ітератора an, на консолі для кожної ітерації.
- Надрукуйте текст на консолі. \n — це символ нового рядка, який переміщує курсор на новий рядок для друку звідти.
- Використовуйте змінну ітератора, щоб перебирати елементи вектора nums від початку до останнього елемента. Зверніть увагу, що ми використовуємо ітератори vector::cbegin() і vector::cend().
- Виведіть значення, на які вказує змінна ітератора a, на консолі для кожної ітерації.
- Функція main має повертати значення, якщо програма виконується успішно.
- Кінець тіла функції 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(); }
вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка 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() -Він повертає найбільшу кількість елементів, які може зберігати вектор.
- Ємність () – 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; }
вихід:
Ось скріншот коду:
Пояснення коду:
- Включіть файл заголовка iostream у наш код, щоб використовувати його функцію.
- Включіть векторний файл заголовка в наш код, щоб використовувати його функції.
- Включіть простір імен std у наш код, щоб використовувати його класи без його виклику.
- Виклик функції main(). Логіку програми слід додати в тіло цієї функції.
- Створіть вектор з іменем vector1 для зберігання цілих чисел.
- Використовуйте цикл for, щоб створити змінну x зі значеннями від 1 до 10.
- Вставте значення змінної x у вектор.
- Надрукуйте розмір вектора поруч з іншим текстом на консолі.
- Надрукуйте ємність вектора поруч з іншим текстом на консолі.
- Надрукуйте максимальну кількість елементів, які вектор може вмістити поруч з іншим текстом на консолі.
- Змініть розмір вектора, щоб він містив лише 5 елементів.
- Надрукуйте новий розмір вектора поруч з іншим текстом.
- Перевірте, чи вектор не порожній.
- Вивести текст на консолі, якщо вектор не порожній.
- Використовуйте оператор else, щоб вказати, що робити, якщо вектор порожній.
- Текст для друку на консолі, якщо вектор порожній.
- Після успішного завершення програма повинна повернути значення.
- Кінець тіла функції main().
Підсумки
- A C++ вектор — це динамічний масив, здатний автоматично змінювати свій розмір, коли елемент додається або видаляється з нього.
- Зберігання вектора автоматично обробляється контейнером.
- Елементи вектора зберігаються в безперервному сховищі, щоб отримати до них доступ, а потім пройти їх за допомогою ітераторів.
- Вставка нових даних у вектор виконується в його кінці.
- Вставка даних у вектор займає різний час.
- Видалення елемента з вектора займає постійний час.
- Вставка або видалення елемента на початку займає лінійний час.
- Вектори слід використовувати при роботі з елементами даних, які постійно змінюються.
- Крім того, ви можете використовувати вектори, якщо розмір даних не відомий до початку.