logo

vektor erase() og clear() i C++

Forudsætning: Vektor i C++

Vektorer er de samme som dynamiske arrays med evnen til at ændre størrelsen på sig selv automatisk, når et element indsættes eller slettes, og deres lagring håndteres automatisk af containeren.



vektor::clear()

Det klar() funktionen bruges til at fjerne alle elementer i vektorbeholderen, hvilket gør den til størrelse 0.

Syntaks:

 vector_name .clear()>

Parametre: Ingen parametre sendes.



Resultat: Alle elementer i vektoren fjernes (eller destrueres).

Eksempel:

 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;> >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;> }>

>

>

Produktion

 No Output>

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)
Alle elementer bliver ødelagt én efter én.

Fejl og undtagelser

  1. Den har ingen undtagelse kastegaranti.
  2. Det viser en fejl, når en parameter sendes.

vektor::slet()

slette() funktion bruges til at fjerne elementer fra en beholder fra den angivne position eller område.

Syntaks:

 vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>

Parametre:

  • Placering af elementet, der skal fjernes, i form af en iterator.
  • Området er angivet ved hjælp af start- og slutiteratorer.

Resultat: Elementer fjernes fra den angivne position af beholderen.

Eksempel:

 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>

Fjernelse en element fra -en bestemt stilling

Eksempel:

C++




// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>myvektor{ 1, 2, 3, 4, 5 };> >vector<>int>>::iterator det;> >it = myvector.begin();> >myvector.erase(it);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

Produktion

itererende kort java
 2 3 4 5>

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)

Fjernelse af et bestemt element

For at slette et bestemt element baseret på dets værdi, skal vi først vide om dets position, og vi kan finde det ved hjælp af find()-funktionen

Eksempel:

C++




// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>vektor = { 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;> }>

>

>

Produktion

vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>

Fjernelse af elementer inden for et område

C++




// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>myvektor{ 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;> }>

>

>

Produktion

 4 5>

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)

Fjernelse af vektorparelementer

Eksempel:

C++




#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& ting) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'æble' }, { 2, 'banan' }, { 3, 'kirsebær' }, { 4, 'Guava' } }; // Fjern elementet ved position 1 (indeks 0) x.erase(x.begin()); print(x); // Udskriv [{2,banana}, {3,cherry}, {4,Guava}] // Fjern elementerne på position 0 og 1 (indeks 0 // og 1) x.erase(x.begin(), x.begin() + 2); print(x); // Udskriv [{4,Guava}] // Ryd vektoren x.clear(); print(x); // Udskriv intet (kun tomme parenteser) return 0; } // Denne kode er bidraget af Susobhan Akhuli>

>

>

Produktion

[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)

Fejl og undtagelser

  1. Den har ingen undtagelseskastgaranti, hvis positionen er gyldig.
  2. Viser ellers udefineret adfærd.

Ansøgning

Givet en liste over heltal, fjern alle lige elementer fra vektoren og udskriv vektoren.

Input:

1, 2, 3, 4, 5, 6, 7, 8, 9>

Produktion:

1 3 5 7 9>

Forklaring: 2, 4, 6 og 8, som er lige og slettet fra vektoren

Algoritme

  1. Kør en løkke til størrelsen af ​​vektoren.
  2. Tjek om elementet i hver position er deleligt med 2, hvis ja, fjern elementet og formindsk iteratoren.
  3. Udskriv den endelige vektor.

Nedenstående program implementerer ovenstående tilgang.

C++




// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>myvektor{ 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;> }>

>

>

Produktion

 1 3 5 7 9>

Tidskompleksitet: O(N) i værste fald, da en sletning tager lineær tid.

clear() vs erase(), hvornår skal man bruge hvad?

klar() fjerner alle elementer fra en vektorbeholder og gør dermed dens størrelse 0. Alle elementer i vektoren fjernes ved hjælp af klar() fungere.

slette() funktion bruges på den anden side til at fjerne specifikke elementer fra beholderen eller en række elementer fra beholderen, og dermed reducere dens størrelse med antallet af fjernede elementer.