Edellytys: Vektori C++:ssa
Vektorit ovat samoja kuin dynaamiset taulukot, joilla on mahdollisuus muuttaa itsensä kokoa automaattisesti, kun elementti lisätään tai poistetaan, ja säilö käsittelee niiden tallennuksen automaattisesti.
vektori::clear()
The asia selvä() -funktiota käytetään poistamaan kaikki vektorisäiliön elementit, mikä tekee siitä koon 0.
Syntaksi:
vector_name .clear()>
Parametrit: Parametreja ei välitetä.
Tulos: Kaikki vektorin elementit poistetaan (tai tuhotaan).
Esimerkki:
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> >myvektori;> > 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;> }> |
>
>
Lähtö
No Output>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: O(1)
Kaikki elementit tuhoutuvat yksitellen.
Virheet ja poikkeukset
- Sillä ei ole poikkeusta heittoakuuta.
- Se näyttää virheen, kun parametri välitetään.
vektori::erase()
Erase() -toimintoa käytetään elementtien poistamiseen säiliöstä määritetyltä sijainnilta tai alueelta.
Syntaksi:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Parametrit:
- Poistettavan elementin sijainti iteraattorin muodossa.
- Alue määritetään aloitus- ja loppuiteraattoreilla.
Tulos: Elementit poistetaan säiliön määritetystä paikasta.
Esimerkki:
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>
Poistaminen an elementti alkaen a erityinen asema
Esimerkki:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektori{ 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;> }> |
>
>Lähtö
chiranjeevi näyttelijä
2 3 4 5>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: O(1)
Tietyn elementin poistaminen
Jos haluat poistaa tietyn elementin sen arvon perusteella, meidän on ensin tiedettävä sen sijainti ja voimme löytää sen käyttämällä find()-funktiota
Esimerkki:
C++
// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> > vector<> int> >vektori = { 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;> }> |
>
>Lähtö
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Elementtien poistaminen alueen sisällä
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektori{ 1, 2, 3, 4, 5 };> > vector<> int> >::iteraattori 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;> }> |
>
>Lähtö
4 5>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: O(1)
Vektoriparin elementtien poistaminen
Esimerkki:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& asia) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'omena' }, { 2, 'banaani' }, { 3, 'kirsikka' }, { 4, 'Guava' } }; // Poista elementti sijainnista 1 (indeksi 0) x.erase(x.begin()); tulosta(x); // Tulosta [{2,banaani}, {3,kirsikka}, {4,Guava}] // Poista elementit paikoista 0 ja 1 (indeksit 0 // ja 1) x.erase(x.begin(), x.begin() + 2); tulosta(x); // Tulosta [{4,Guava}] // Tyhjennä vektori x.clear(); tulosta(x); // Tulosta ei mitään (vain tyhjät hakasulkeet) return 0; } // Tämän koodin tarjoaa Susobhan Akhuli> |
>
>Lähtö
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: O(1)
Virheet ja poikkeukset
- Sillä ei ole poikkeustakuuta, jos asema on voimassa.
- Osoittaa muuten määrittelemätöntä käyttäytymistä.
Sovellus
Kun annetaan luettelo kokonaisluvuista, poista kaikki parilliset elementit vektorista ja tulosta vektori.
Syöte:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Lähtö:
1 3 5 7 9>
Selitys: 2, 4, 6 ja 8, jotka ovat parillisia ja pyyhitty pois vektorista
Algoritmi
- Suorita silmukka vektorin kokoon.
- Tarkista, onko kussakin paikassa oleva elementti jaollinen kahdella, jos on, poista elementti ja vähennä iteraattoria.
- Tulosta lopullinen vektori.
Alla oleva ohjelma toteuttaa yllä olevan lähestymistavan.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektori{ 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;> }> |
>
>Lähtö
1 3 5 7 9>
Aika monimutkaisuus: O(N) pahimmassa tapauksessa, koska pyyhkiminen vie lineaarisen ajan.
clear() vs erase(), milloin mitä käyttää?
asia selvä() poistaa kaikki elementit vektorisäiliöstä, jolloin sen koko on 0. Kaikki vektorin elementit poistetaan käyttämällä asia selvä() toiminto.
Erase() Toisaalta toimintoa käytetään tiettyjen elementtien poistamiseen säiliöstä tai joukon elementtejä säiliöstä, mikä pienentää sen kokoa poistettujen elementtien lukumäärällä.