Stl контейнер vector (вектор) - динамічний масив c

Stl контейнер vector (вектор) - динамічний масив c

Крім масивів в c ++ існують ще контейнери, які дозволяють вам трохи по іншому зберігати дані і, до того ж, застосовувати до них різні функції (пошук, сортування і т.д.). Сьогодні ви дізнаєтеся про один з контейнерів - векторі (vector)

Можливо ви вже стикалися з такою проблемою, що масиви в с ++ мають обмежений розмір, а ми точно не знаємо кількість елементів, необхідне в масиві. У таких випадках необхідно використовувати динамічне програмування. Тобто виділяти пам'ять під елементи масиву при необхідності додати будь-якої елемент. В принципі, в с ++ це можна реалізувати вручну, але навіщо? якщо є спеціальний клас - vector. Він дозволяє створювати нам масиви змінної довжини в залежності від ситуації.

Для створення вектора вам необхідно підключити.

Потім створення вектора майже нічим не відрізняється від створення змінної і / або масиву:

Для запису в вектор досить набрати ім'я вектора.push_back (що покласти)

Звернення до n-ому елементу нічим не відрізняється від звернення до елементу масиву:

Для видалення останнього елемента вектора використовується функція pop_back ()

Ще трохи корисних функцій:

ітератори
begin () - итератор на перший елемент;
end () - итератор на елемент йде після останнього;
rbegin () - итератор на останній елемент (для зворотних алгоритмів);
rend () - итератор на позицію перед першим елементом (для зворотних алгоритмів).

призначення елементів
assign (InputIterator first, InputIterator last) - видалити всі елементи і вставити елементи з діапазону [first, last);
assign (size_type, const T t) - видалити всі елементи і вставити n елементів зі значенням t;
swap (reference x, reference y) - обміняти значення елементів x і y (аналогічна глобальної функції).

доступ до елементів
at (size_type n) - доступ до елементу з індексом n, при некоректному значенні n збуджується виключення;
back () - доступ до останнього елемента;
front () - доступ до першого елементу.

Якщо виключення не потрібно, то для доступу до елементів можна скористатися перевантаженої операцією [].

видалення елементів
clear () - видалити всі елементи з вектора;
erase (iterator position) - видаляє вказаний елемент і повертає ітератор на наступний елемент або end ();
erase (iterator first, iterator last) - видаляє елементи з діапазону [first, last).

розмір вектора
empty () - повертає істину, якщо розмір вектора 0;
reserve (size_type n) - зарезервувати місце для n елементів;
capacity () - повертає число елементів, які можна зберегти в векторі;
resize (size_type sz) - перевиделяет поточний розмір вектора;
resize (size_type sz, T c) - перевиделяет поточний розмір вектора. Якщо новий розмір більше попереднього, то нові елементи встановлюються в значення c, інакше в значення за замовчуванням для типу T;
size () - повертає число елементів;
max_size () - максимально можливий розмір вектора.

вставка елементів
insert (iterator position, size_type n, const T x) - вставляє n елементів зі значенням x в зазначену позицію;
insert (iterator position, const T x) - вставляє елемент зі значенням x в зазначену позицію;
insert (iterator position, InputIterator first, InputIterator last) - вставляє в зазначену позицію копії елементів діапазону [first, last).

підтримка стека
pop_back () - видалити останній елемент;
push_back (const T x) - додати в кінець елемент.

перевантажені операції
[] - операція індексації, не генерує виняток при виході за межі масиву;
= - призначити одному вектору копії елементів другого (v1 ​​= v2);
== - визначити чи рівні два вектори (v1 == v2);
!= - визначити нерівні чи два вектора (v1! = V2);
- більше чи один вектор ніж інший (v1> v2);
= - більше або дорівнює один вектор по відношенню до іншого (v1> = v2).

vector
Для типу bool в stl введена особлива спеціалізація шаблону. В результаті розмір масиву менше приблизно у вісім разів - 1 біт на елемент. А також доданий додатковий метод:
flip () - інертіровать елементи.

Останнє з форуму

dimaCyberpunk → Гра в розробці: Chronicles of cyberpunk
Сьогодні стала доступна кнопка, натиснувши яку можна випустити гру. Я ще почекаю до 7го, але нд.

ganny → Безкоштовні ігрові автомати онлайн
Казино можна розглядати як заробіток. Це всього лише гра. Тут або виграв або програв.

Наші друзі

Схожі статті