Вектори — це те ж саме, що й динамічні масиви, з можливістю автоматично змінювати розмір, коли елемент вставляється або видаляється, а їх зберігання автоматично обробляється контейнером. Векторні елементи розміщуються в безперервному сховищі, щоб до них можна було отримати доступ і обходити їх за допомогою ітераторів. У векторах дані вставляються в кінці. Вставлення в кінці займає різний час, оскільки іноді масив може знадобитися розширити. Видалення останнього елемента займає лише постійний час, оскільки зміна розміру не відбувається. Вставлення та стирання на початку або в середині відбувається лінійно в часі.
Що таке std::vector у C++?
std::vector у C++ — це шаблон класу, який містить векторний контейнер і його функції-члени. Він визначається всередині файл заголовка. Функції-члени класу std::vector надають різні функціональні можливості векторним контейнерам.
Синтаксис для оголошення вектора в C++
std::vector vectorName;>
де тип даних — це тип даних кожного елемента вектора. Ви можете видалити std::, якщо ви вже використовували простір імен std.
Ініціалізація вектора в C++
Ми можемо ініціалізувати вектор наступними способами:
1. Ініціалізація за допомогою списку
Ця ініціалізація виконується за допомогою оголошення. Тут ми передаємо список елементів конструктору векторів, щоб створити вектор із зазначеними елементами.
vector name({ value1, value2, value3 .... });>
2. Ініціалізація З єдиною цінністю
Ця ініціалізація також виконується за допомогою оголошення. Тут ми вказуємо розмір вектора, а потім ініціалізуємо кожен елемент вектора значенням.
vector name(size, value);>
3. Ініціалізація з іншого вектора
Ця ініціалізація використовується для створення вектора, який є точною копією other_vec.
vector name(other_vec);>
Нижче наведено деякі поширені функції-члени класу std::vector:
Ітератори
- почати() – Повертає ітератор, що вказує на перший елемент у векторі
- кінець() – Повертає ітератор, що вказує на теоретичний елемент, який слідує за останнім елементом у векторі
- rbegin() – Повертає зворотний ітератор, що вказує на останній елемент у векторі (зворотний початок). Він рухається від останнього елемента до першого
- render() – Повертає зворотний ітератор, що вказує на теоретичний елемент, що передує першому елементу у векторі (розглядається як зворотний кінець)
- cbegin() – Повертає постійний ітератор, що вказує на перший елемент у векторі.
- декілька() – Повертає постійний ітератор, що вказує на теоретичний елемент, який слідує за останнім елементом у векторі.
- crbegin() – Повертає постійний зворотний ітератор, що вказує на останній елемент у векторі (зворотний початок). Він рухається від останнього елемента до першого
- віросповідання() – Повертає постійний зворотний ітератор, що вказує на теоретичний елемент, що передує першому елементу у векторі (розглядається як зворотний кінець)
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Output of begin and end: '> ;> > for> (> auto> i = g1.begin(); i != g1.end(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of cbegin and cend: '> ;> > for> (> auto> i = g1.cbegin(); i != g1.cend(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of rbegin and rend: '> ;> > for> (> auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> > cout << *ir <<> ' '> ;> > > cout <<> '
Output of crbegin and crend : '> ;> > for> (> auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> > cout << *ir <<> ' '> ;> > > return> 0;> }> |
>
>Вихід
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
Ємність
- розмір() – Повертає кількість елементів у векторі.
- max_size() – Повертає максимальну кількість елементів, які може містити вектор.
- місткість() – Повертає розмір простору для зберігання, виділеного на даний момент для вектора, виражений як кількість елементів.
- змінити розмір (n) – Змінює розмір контейнера так, щоб він містив «n» елементів.
- порожній() – Повертає, чи контейнер порожній.
- shrink_to_fit() – Зменшує місткість контейнера до його розміру та знищує всі елементи поза межами місткості.
- резерв() – Вимагає, щоб ємність вектора була принаймні достатньою, щоб містити n елементів.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Size : '> << g1.size();> > cout <<> '
Capacity : '> << g1.capacity();> > cout <<> '
Max_Size : '> << g1.max_size();> > > // resizes the vector size to 4> > g1.resize(4);> > > // prints the vector size after resize()> > cout <<> '
Size : '> << g1.size();> > > // checks if the vector is empty or not> > if> (g1.empty() ==> false> )> > cout <<> '
Vector is not empty'> ;> > else> > cout <<> '
Vector is empty'> ;> > > // Shrinks the vector> > g1.shrink_to_fit();> > cout <<> '
Vector elements are: '> ;> > for> (> auto> it = g1.begin(); it != g1.end(); it++)> > cout << *it <<> ' '> ;> > > return> 0;> }> |
>
javascript для спадного меню
>Вихід
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Доступ до елемента
- оператор посилання [g] – Повертає посилання на елемент у позиції «g» у векторі
- при (г) – Повертає посилання на елемент у позиції «g» у векторі
- фронт() – Повертає посилання на перший елемент у векторі
- назад() – Повертає посилання на останній елемент у векторі
- C++
// C++ program to illustrate the>
// element access in vector>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
vector<>
int>
>g1;>
>
>
for>
(>
int>
i = 1; i <= 10; i++)>
>
g1.push_back(i * 10);>
>
>
cout <<>
' Reference operator [g] : g1[2] = '>
<< g1[2];>
>
>
cout <<>
' at : g1.at(4) = '>
<< g1.at(4);>
>
>
cout <<>
' front() : g1.front() = '>
<< g1.front();>
>
>
cout <<>
' back() : g1.back() = '>
<< g1.back();>
>
>
// pointer to the first element>
>
int>
* pos = g1.data();>
>
>
cout <<>
' The first element is '>
<< *pos;>
>
return>
0;>
}>
>
>
ВихідReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Модифікатори
- призначити() – Призначає нове значення векторним елементам, замінюючи старі
- відсунути() – Він штовхає елементи у вектор ззаду
- pop_back() – Використовується для висунення або видалення елементів із вектора ззаду.
- вставити() – Він вставляє нові елементи перед елементом у вказаній позиції
- стерти() – Використовується для видалення елементів із контейнера з указаної позиції чи діапазону.
- своп() – Використовується для заміни вмісту одного вектора іншим вектором такого ж типу. Розміри можуть відрізнятися.
- очистити() – Використовується для видалення всіх елементів векторного контейнера
- поставити() – Він розширює контейнер, вставляючи новий елемент на місце
- emplace_back() – Використовується для вставки нового елемента в векторний контейнер, новий елемент додається в кінець вектора
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>в;>
>
>
// fill the vector with 10 five times>
>
v.assign(5, 10);>
>
>
cout <<>
'The vector elements are: '>
;>
>
for>
(>
int>
i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector
v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> >
>
ВихідThe vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
Час виконання різноманітних операцій над векторами становить:
- Довільний доступ – константа O(1)
- Вставка або видалення елементів у кінці – константа O(1)
- Вставка або видалення елементів – лінійно на відстані до кінця вектора O(N)
- Знаючи розмір – константа O(1)
- Зміна розміру вектора - лінійний O(N)
Усі функції-члени std::vector
Нижче наведено список усіх функцій-членів класу std::vector у C++:
Векторна функція
опис
що таке кластеризація
Додає елемент у кінець вектора. Видаляє останній елемент вектора. Повертає кількість елементів у векторі. max_size()
Повертає максимальну кількість елементів, які може містити вектор. змінити розмір()
Змінює розмір вектора. Перевіряє, чи вектор порожній. оператор []
Отримує доступ до елемента в певній позиції. в()
Отримує доступ до елемента в певній позиції з перевіркою меж. фронт()
що таке awt
Отримує доступ до першого елемента вектора. назад()
Отримує доступ до останнього елемента вектора. почати()
Повертає ітератор, що вказує на перший елемент вектора. кінець()
Повертає ітератор, що вказує на останній елемент вектора. rbegin()
Повертає зворотний ітератор, що вказує на останній елемент вектора. render()
Повертає зворотний ітератор, що вказує на елемент, що передує першому елементу вектора. cbegin
Повертає const_iterator на початок декілька
Повертає const_iterator до кінця crbegin
Повертає const_reverse_iterator до зворотного початку вірити
Повертає const_reverse_iterator до зворотного кінця Вставляє елементи в певну позицію у векторі. Видаляє елементи з певної позиції або діапазону у векторі. своп()
Замінює вміст вектора вмістом іншого вектора. Видаляє всі елементи з вектора. поставити()
Створює та вставляє елемент у вектор. emplace_back()
Створює та вставляє елемент у кінець вектора. призначити()
Призначає нові значення елементам вектора, замінюючи старі. місткість()
Повертає розмір простору для зберігання, виділеного на даний момент для вектора. резерв()
Вимагає, щоб ємність вектора була принаймні достатньою, щоб містити вказану кількість елементів. shrink_to_fit()
Зменшує використання пам’яті, звільняючи невикористаний простір. get_allocator
Повертає копію об’єкта розподілювача, пов’язаного з вектором. Необхідно прочитати:
- Як перевірити, чи вектор містить заданий елемент у C++?
- Як знайти індекс даного елемента у векторі в C++
- Сортування вектора в C++