Вектор у стандартній бібліотеці шаблонів C ++ (STL) із прикладом

Зміст:

Anonim

Що таке вектор C ++?

С ++ ВЕКТОР є динамічний масив , здатні зміни розміру автоматично. Зміна розміру відбувається після того, як елемент був доданий або видалений з вектора. Зберігання обробляється контейнером автоматично. Елементи вектора зберігаються в сусідньому сховищі. Це дозволяє програмістам на C ++ отримувати доступ до векторних елементів та переходити їх за допомогою ітераторів.

Вставка нових даних у вектор виконується в його кінці. Це займає різницю в часі. Видалення елемента з вектора займає постійний час. Причина полягає в тому, що немає необхідності змінювати розмір вектора. Вставка або видалення елемента на початку вектора займає лінійний час.

У цьому підручнику з C ++ ви дізнаєтесь:

  • Що таке вектор C ++?
  • Коли використовувати вектор?
  • Як ініціалізувати вектори в C ++
  • Ітератори
  • Модифікатори
  • Приклад 1
  • Приклад 2
  • Ємність
  • Приклад 3

Коли використовувати вектор?

Вектор С ++ слід використовувати за таких обставин:

  • Коли йдеться про елементи даних, які змінюються послідовно.
  • Якщо розмір даних невідомий до початку, вектор не вимагатиме встановити максимальний розмір контейнера.

Як ініціалізувати вектори в C ++

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

vector  name (items)
  • Як показано вище, ми починаємо з ключового слова vector.
  • Тип даних - це тип даних елементів, що зберігаються у векторі.
  • Ім'я - це ім'я вектора або елементів даних.
  • Елементи позначають кількість елементів для даних вектора. Цей параметр необов’язковий.

Ітератори

Мета ітераторів - допомогти нам отримати доступ до елементів, які зберігаються у векторі. Це об’єкт, який працює як вказівник. Ось загальні ітератори, що підтримуються векторами С ++:

  • vector :: begin (): дає ітератор, який вказує на перший елемент вектора.
  • vector :: end (): дає ітератор, який вказує на минулий кінець елемента вектора.
  • vector :: cbegin (): це те саме, що vector :: begin (), але він не має можливості змінювати елементи.
  • vector :: cend (): це те саме, що vector :: end (), але не може змінювати векторні елементи.

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

Модифікатори використовуються для зміни значення зазначеного типу даних. Ось загальні модифікатори в C ++:

  • vector :: push_back (): Цей модифікатор штовхає елементи ззаду.
  • vector :: insert (): Для вставки нових елементів у вектор у вказаному місці.
  • vector :: pop_back (): Цей модифікатор видаляє векторні елементи зі зворотного боку.
  • vector :: erase (): Використовується для видалення діапазону елементів із зазначеного місця.
  • vector :: clear (): Видаляє всі векторні елементи.

Приклад 1

#include #include using namespace std;int main(){vector 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, щоб допомогти нам перебирати вектор. Змінна допоможе нам перебирати векторні елементи, від 1- го до 5- го елементів.
  8. Вставте елементи у векторний номер зі зворотного боку. Для кожної ітерації це додасть поточне значення змінної a у вектор, яке становить від 1 до 5.
  9. Роздрукуйте текст на консолі
  10. Використовуйте змінну ітератора a, щоб перебирати елементи векторних чисел від початку до кінця елемента. Зверніть увагу, що ми використовуємо ітератори vector :: begin () та vector :: end ().
  11. Надрукуйте значення, на які вказує змінна ітератора an на консолі для кожної ітерації.
  12. Роздрукуйте текст на консолі. \ N - це новий символ рядка, який переміщує курсор до нового рядка для друку звідти.
  13. Використовуйте змінну ітератора для перебору елементів векторних номерів від початку до кінця елемента. Зверніть увагу, що ми використовуємо ітератори vector :: cbegin () та vector :: cend ().
  14. Надрукуйте значення, на які вказує змінна ітератора a на консолі для кожної ітерації.
  15. Основна функція повинна повертати значення, якщо програма успішно працює.
  16. Кінець тіла основної () функції.

Приклад 2

#include #include using namespace std;int main(){vector 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. Початок тіла основної () функції.
  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. Кінець тіла основної () функції.

Ємність

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

  • Розмір () - повертає кількість елементів у векторі.
  • Max_size () - повертає найбільшу кількість елементів, яку вектор може зберегти.
  • Capacity () - Повертає кількість місця для зберігання, виділеного вектору.
  • Resize () - Змінює розмір контейнера, щоб містити n елементів. Якщо поточний розмір вектора перевищує n, елементи назад будуть видалені з вектора. Якщо поточний розмір вектора менший за n, додаткові елементи будуть додані до зворотного боку вектора.
  • Empty () -i t повертає true, якщо вектор порожній, інакше повертає false.

Приклад 3

#include #include using namespace std;int main() {vector 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"<

Вихід:

Ось скріншот коду:

Пояснення коду:

  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. Кінець основного () елемента функції.

Короткий зміст:

  • Вектор С ++ - це динамічний масив, здатний автоматично змінювати розмір самого себе при додаванні або видаленні елемента з нього.
  • Зберігання вектора обробляється контейнером автоматично.
  • Елементи вектора зберігаються у суміжній пам’яті, щоб отримати доступ, а потім обходити їх за допомогою ітераторів.
  • Вставка нових даних у вектор виконується в його кінці.
  • Вставка даних у вектор займає різний час.
  • Видалення елемента з вектора займає постійний час.
  • Вставка або видалення елемента на початку займає лінійний час.
  • Слід використовувати вектори при роботі з елементами даних, які постійно змінюються.
  • Крім того, ви можете використовувати вектори, якщо розмір даних не відомий перед початком.