logo

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

Forutsetning: Vektor i C++

Vektorer er de samme som dynamiske matriser med muligheten til å endre størrelsen på seg selv automatisk når et element settes inn eller slettes, og lagringen deres håndteres automatisk av beholderen.



vektor::clear()

De klar() funksjonen brukes til å fjerne alle elementene i vektorbeholderen, og dermed gjøre den til størrelse 0.

Syntaks:

 vector_name .clear()>

Parametere: Ingen parametere sendes.



Resultat: Alle elementene i vektoren blir fjernet (eller ødelagt).

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

>

>

Produksjon

 No Output>

Tidskompleksitet: PÅ)
Hjelpeplass: O(1)
Alle elementer blir ødelagt en etter en.

Feil og unntak

  1. Den har ingen unntak kastegaranti.
  2. Den viser en feil når en parameter sendes.

vektor::slett()

viske ut() funksjonen brukes til å fjerne elementer fra en beholder fra den angitte posisjonen eller området.

Syntaks:

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

Parametere:

  • Plassering av elementet som skal fjernes i form av en iterator.
  • Området er spesifisert ved hjelp av start- og sluttiteratorer.

Resultat: Elementer fjernes fra den angitte posisjonen til 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>

Fjerner an element fra en spesiell stilling

Eksempel:

C++




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

>

>

Produksjon

itererende kart java
 2 3 4 5>

Tidskompleksitet: PÅ)
Hjelpeplass: O(1)

Fjerne et bestemt element

For å slette et bestemt element basert på verdien, må vi først vite om dets posisjon, og vi kan finne det ved å bruke fun()-funksjonen

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

>

>

Produksjon

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

Fjerning av elementer innenfor et område

C++




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

>

>

Produksjon

 4 5>

Tidskompleksitet: PÅ)
Hjelpeplass: O(1)

Fjerner 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, 'eple' }, { 2, 'banan' }, { 3, 'kirsebær' }, { 4, 'Guava' } }; // Fjern elementet ved posisjon 1 (indeks 0) x.erase(x.begin()); print(x); // Skriv ut [{2,banana}, {3,cherry}, {4,Guava}] // Fjern elementene på posisjon 0 og 1 (indekser 0 // og 1) x.erase(x.begin(), x.begin() + 2); print(x); // Skriv ut [{4,Guava}] // Fjern vektoren x.clear(); print(x); // Skriv ut ingenting (bare tomme parenteser) return 0; } // Denne koden er bidratt av Susobhan Akhuli>

>

>

Produksjon

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

Tidskompleksitet: PÅ)
Hjelpeplass: O(1)

Feil og unntak

  1. Den har ingen unntakskastgaranti hvis posisjonen er gyldig.
  2. Viser udefinert oppførsel ellers.

applikasjon

Gitt en liste over heltall, fjern alle partallselementene fra vektoren og skriv ut vektoren.

Inndata:

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

Produksjon:

1 3 5 7 9>

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

Algoritme

  1. Kjør en løkke til størrelsen på vektoren.
  2. Sjekk om elementet i hver posisjon er delbart med 2, hvis ja, fjern elementet og reduser iteratoren.
  3. Skriv ut den endelige vektoren.

Programmet nedenfor implementerer tilnærmingen ovenfor.

C++




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

>

>

Produksjon

 1 3 5 7 9>

Tidskompleksitet: O(N) i verste fall da en sletting tar lineær tid.

clear() vs erase(), når skal jeg bruke hva?

klar() fjerner alle elementene fra en vektorbeholder, og gjør dermed størrelsen til 0. Alle elementene i vektoren fjernes ved å bruke klar() funksjon.

viske ut() funksjon, på den annen side, brukes til å fjerne spesifikke elementer fra beholderen eller en rekke elementer fra beholderen, og dermed redusere størrelsen med antall fjernede elementer.