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.