Необхідна умова: Вектор на C++
Вектори — це те ж саме, що й динамічні масиви, з можливістю автоматичного зміни розміру, коли елемент вставляється або видаляється, а їх зберігання автоматично обробляється контейнером.
вектор::очистити()
The очистити() Функція використовується для видалення всіх елементів векторного контейнера, таким чином роблячи його розмір 0.
Синтаксис:
vector_name .clear()>
Параметри: Жодні параметри не передаються.
Результат: Усі елементи вектора видаляються (або знищуються).
приклад:
Input: myvector= {1, 2, 3, 4, 5}; myvector.clear(); Output: myvector= {}> C++
// C++ program to demonstrate> // Implementation of clear() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>мій вектор;> >myvector.push_back(1);> >myvector.push_back(2);> >myvector.push_back(3);> >myvector.push_back(4);> >myvector.push_back(5);> >// Vector becomes 1, 2, 3, 4, 5> >myvector.clear();> >// vector becomes empty> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }> |
>
>
Вихід
No Output>
Часова складність: O(N)
Допоміжний простір: О(1)
Всі елементи знищуються один за іншим.
Помилки та винятки
- Він не має жодної гарантії викиду.
- Він показує помилку, коли передається параметр.
вектор::стерти()
стерти() функція використовується для видалення елементів із контейнера з указаної позиції чи діапазону.
Синтаксис:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Параметри:
- Позиція елемента, який потрібно видалити, у формі ітератора.
- Діапазон визначається за допомогою початкового та кінцевого ітераторів.
Результат: Елементи видаляються із зазначеної позиції контейнера.
приклад:
Input : myvector= {1, 2, 3, 4, 5}, iterator= myvector.begin()+2 myvector.erase(iterator); Output : 1, 2, 4, 5 Input : myvector= {1, 2, 3, 4, 5, 6, 7, 8}, iterator1= myvector.begin()+3, iterator2= myvector.begin()+6 myvector.erase(iterator1, iterator2); Output : 1, 2, 3, 7, 8> Видалення ан елемент від a особлива позиція
приклад:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>мійвектор{ 1, 2, 3, 4, 5 };> >vector<>int>>::ітератор it;> >it = myvector.begin();> >myvector.erase(it);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }> |
>
>Вихід
алгоритм knn
2 3 4 5>
Часова складність: O(N)
Допоміжний простір: О(1)
Видалення окремого елемента
Щоб видалити певний елемент на основі його значення, спочатку нам потрібно знати його позицію, і ми можемо знайти його за допомогою функції find().
приклад:
C++
// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>вектор = { 1, 2, 3, 3, 4, 5 };> >cout <<>'vector before deleting '> << endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >// finding the position of the element in the vector> >int> valueToBeDeleted = 3;> >auto> it = find(vector.begin(), vector.end(),> >valueToBeDeleted);> >if> (it != vector.end()) {> >vector.erase(it);> >}> >cout << endl> ><<>'Vector after deleting valueToBeDeleted '> ><< endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >cout << endl;> >return> 0;> }> |
>
>Вихід
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Видалення елементів у діапазоні
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>мійвектор{ 1, 2, 3, 4, 5 };> >vector<>int>>::ітератор it1, it2;> >it1 = myvector.begin();> >it2 = myvector.end();> >it2--;> >it2--;> >myvector.erase(it1, it2);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }> |
>
>Вихід
4 5>
Часова складність: O(N)
Допоміжний простір: О(1)
Видалення елементів векторної пари
приклад:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& річ) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'яблуко' }, { 2, 'банан' }, { 3, 'вишня' }, { 4, 'Гава' } }; // Видалити елемент у позиції 1 (індекс 0) x.erase(x.begin()); print(x); // Вивести [{2,banana}, {3,cherry}, {4,Guava}] // Видалити елементи в позиціях 0 і 1 (індекси 0 // і 1) x.erase(x.begin(), x.begin() + 2); print(x); // Вивести [{4,Guava}] // Очистити вектор x.clear(); print(x); // Нічого не друкувати (лише порожні дужки) return 0; } // Цей код створено Susobhan Akhuli> |
>
>Вихід
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []> Часова складність: O(N)
Допоміжний простір: О(1)
Помилки та винятки
- Він не має гарантії виключення, якщо позиція дійсна.
- В іншому випадку показує невизначену поведінку.
застосування
Дано список цілих чисел, видалити всі парні елементи з вектора та надрукувати вектор.
введення:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Вихід:
1 3 5 7 9>
Пояснення: 2, 4, 6 і 8, які парні та стерті з вектора
Алгоритм
- Виконайте цикл до розміру вектора.
- Перевірте, чи ділиться елемент у кожній позиції на 2, якщо так, видаліть елемент і зменште ітератор.
- Роздрукуйте кінцевий вектор.
Наведена нижче програма реалізує вищезазначений підхід.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>мійвектор{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };>> >for> (>auto> i = myvector.begin(); i != myvector.end();> >++i) {> >if> (*i % 2 == 0) {> >myvector.erase(i);> >i--;> >}> >}> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }> |
>
>Вихід
1 3 5 7 9>
Часова складність: O(N) у гіршому випадку, оскільки стирання займає лінійний час.
clear() проти erase(), коли використовувати що?
очистити() видаляє всі елементи з векторного контейнера, таким чином роблячи його розмір 0. Усі елементи вектора видаляються за допомогою очистити() функція.
стерти() функція, з іншого боку, використовується для видалення певних елементів із контейнера або діапазону елементів із контейнера, таким чином зменшуючи його розмір на кількість видалених елементів.