C++ STL vector

Visual Basic, C#, C++, Python и др.
Потребителски аватар
[BG][SSA]Troll
Модератор
Мнения: 17
Регистриран: вт юли 10, 2018 9:35 pm
Баланс: Locked
Местоположение: Велико Търново

ср юли 11, 2018 3:55 pm

Това е първият ми урок и в него ще обясня за STL-ския контейнер vector. Векторът е динамичен масив, което означава, че не е заел едно парче памет и да е блокирано от него до края, без значение дали ще я използвате цялата, или не. Той си заделя автоматично памет за всеки елемент, който вкарате в него. Така вие блокирате само толкова памет, колкото ще използвате. При него във всеки един момент може да се добавя или трие елемент, като триенето освобождава заетата памет от елемента.
За да използвате векторите е нужно да добавите в кода си Векторът се декларира така vector<тип>идентификатор(име). Пример: Елементите на вектор могат да се достъпват като тези на масив. Пример, който взема трети елемент на вектора:
Някои функции на класа vector:
push_back(val) - Вкарва елемент със стойност val от края на вектора. Сложност: O(1). Пример pop_back() - Трие елемент от края на вектора. Сложност: O(1). Пример insert(pos,val) - Вкарва елемент на дадена позиция Важно pos е итератор към позицията! Сложността е броя на вкараните елементи + броя на тези след тях. Пример, който вкарва числото 1 на втора позиция erase(a , b) - Трие елементите в интервала от a до b. Важно a и b са итератори, а не номера на позиции! Ако ще триете само един елемент, то дайте само итератор към него. Сложността е броя на изтритите елементи + броя на елементите след последния. Eто пример за триене на първите 3 елемента
begin() - Връща итератор към началото на вектора. Сложност: O(1).
end() - Връща итератор към края на вектора. Сложност: O(1).
size() - Връща размера на вектора. Сложност: O(1).
empty() - Връща true, ако вектора е празен, в противен случай - false. Сложност: O(1).
clear() - Изчиства вектора. Сложността тук зависи от това какъв е вектора. Ако е от стандартен тип тя е O(1), но ако не е - е броят на елементите във вектора.
resize(nsize,val) - Преоразмерява вектора. Прави размерът му nsize елемента. Ако nsize е по-голям от неговия текущ размер, новите елементи ще са със стойност val, ако не крайните се трият. Сложността е abs(Размерът на вектора - nsize). Пример в нашия вектор има 1 елемент(числото 1) => след изпълнение на кодът от примера видът му вече ще е "1 0 0 0 0".
Надявам се да съм ви бил полезен. Успех с програмирането :).
Последна промяна от [BG][SSA]Troll на ср юли 11, 2018 4:46 pm, променено общо 3 пъти.

Потребителски аватар
MADNESS
Администратор
Администратор
Мнения: 23
Регистриран: пон юли 09, 2018 12:56 am
Баланс: Locked
Местоположение: Sofia
Контакти:

ср юли 11, 2018 4:05 pm

Урока е супер, полезен и добре обяснен ;)
Наблегни малко на форматирането му и стилизирането за да е по интересен.

Отговори

Върни се в “Системно Програмиране”

  • Информация
  • Кой е на линия

    Потребители, разглеждащи този форум: Няма регистрирани потребители и 0 госта