Condiție preliminară: Vector în C++
Vectorii sunt la fel ca și matricele dinamice, având capacitatea de a se redimensiona automat atunci când un element este inserat sau șters, stocarea lor fiind gestionată automat de container.
vector::clear()
The clar() funcția este utilizată pentru a elimina toate elementele containerului vectorial, făcând astfel dimensiunea 0.
Sintaxă:
vector_name .clear()>
Parametri: Nu sunt transmise parametri.
Rezultat: Toate elementele vectorului sunt eliminate (sau distruse).
Exemplu:
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>>vectorul meu;> >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;> }> |
>
>
Ieșire
No Output>
Complexitatea timpului: PE)
Spațiu auxiliar: O(1)
Toate elementele sunt distruse unul câte unul.
Erori și excepții
- Nu are o garanție de aruncare fără excepție.
- Afișează o eroare atunci când este transmis un parametru.
vector::erase()
şterge() funcția este utilizată pentru a elimina elemente dintr-un container din poziția sau intervalul specificat.
Sintaxă:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Parametri:
- Poziția elementului de eliminat sub forma unui iterator.
- Intervalul este specificat folosind iteratorii de început și de sfârșit.
Rezultat: Elementele sunt îndepărtate din poziția specificată a containerului.
Exemplu:
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> Îndepărtarea un element din A poziţie particulară
Exemplu:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>vectorul meu{ 1, 2, 3, 4, 5 };> >vector<>int>>::iterator it;> >it = myvector.begin();> >myvector.erase(it);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }> |
>
>Ieșire
expresie regulată în java
2 3 4 5>
Complexitatea timpului: PE)
Spațiu auxiliar: O(1)
Eliminarea unui anumit element
Pentru a șterge un anumit element pe baza valorii sale, mai întâi, trebuie să știm despre poziția sa și îl putem găsi folosind funcția find()
Exemplu:
C++
// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>vector = { 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;> }> |
>
>Ieșire
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Eliminarea elementelor dintr-un interval
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>vectorul meu{ 1, 2, 3, 4, 5 };> >vector<>int>>::iterator 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;> }> |
>
>Ieșire
4 5>
Complexitatea timpului: PE)
Spațiu auxiliar: O(1)
Eliminarea elementelor perechilor vectoriale
Exemplu:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& lucru) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'măr' }, { 2, 'banana' }, { 3, 'cireș' }, { 4, 'Guava' } }; // Îndepărtează elementul din poziţia 1 (index 0) x.erase(x.begin()); print(x); // Tipăriți [{2,banana}, {3,cireș}, {4,Guava}] // Îndepărtați elementele de la pozițiile 0 și 1 (indexurile 0 // și 1) x.erase(x.begin(), x.begin() + 2); print(x); // Print [{4,Guava}] // Șterge vectorul x.clear(); print(x); // Imprimă nimic (doar paranteze goale) returnează 0; } // Acest cod este contribuit de Susobhan Akhuli> |
>
>Ieșire
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []> Complexitatea timpului: PE)
Spațiu auxiliar: O(1)
Erori și excepții
- Nu are nicio excepție garantarea aruncării dacă poziția este validă.
- În caz contrar, arată un comportament nedefinit.
Aplicație
Având în vedere o listă de numere întregi, eliminați toate elementele pare din vector și imprimați vectorul.
Intrare:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Ieșire:
1 3 5 7 9>
Explicaţie: 2, 4, 6 și 8 care sunt pare și șterse din vector
Algoritm
- Rulați o buclă la dimensiunea vectorului.
- Verificați dacă elementul din fiecare poziție este divizibil cu 2, dacă da, eliminați elementul și reduceți iteratorul.
- Tipăriți vectorul final.
Programul de mai jos implementează abordarea de mai sus.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>vectorul meu{ 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;> }> |
>
>Ieșire
1 3 5 7 9>
Complexitatea timpului: O(N) în cel mai rău caz, deoarece o ștergere necesită timp liniar.
clear() vs erase(), când să folosești ce?
clar() elimină toate elementele dintr-un container vectorial, făcând astfel dimensiunea acestuia la 0. Toate elementele vectorului sunt îndepărtate folosind clar() funcţie.
şterge() funcția, pe de altă parte, este utilizată pentru a îndepărta anumite elemente din container sau o serie de elemente din container, reducându-i astfel dimensiunea cu numărul de elemente îndepărtate.