logo

vector erase() och clear() i C++

Nödvändig förutsättning: Vektor i C++

Vektorer är samma som dynamiska arrayer med möjlighet att ändra storlek på sig själva automatiskt när ett element infogas eller tas bort, och deras lagring hanteras automatiskt av behållaren.



vektor::clear()

De klar() funktionen används för att ta bort alla element i vektorbehållaren, vilket gör den till storlek 0.

Syntax:

 vector_name .clear()>

Parametrar: Inga parametrar skickas.



Resultat: Alla element i vektorn tas bort (eller förstörs).

Exempel:

 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>

Tidskomplexitet: PÅ)
Hjälputrymme: O(1)
Alla element förstörs en efter en.

Fel och undantag

  1. Den har en kastgaranti utan undantag.
  2. Det visar ett fel när en parameter skickas.

vector::erase()

radera() funktionen används för att ta bort element från en behållare från den angivna positionen eller området.

Syntax:

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

Parametrar:

  • Placering av elementet som ska tas bort i form av en iterator.
  • Området specificeras med start- och slutiteratorer.

Resultat: Element tas bort från behållarens angivna position.

Exempel:

 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>

Ta bort en element från a särskild position

Exempel:

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

java lista sträng
 2 3 4 5>

Tidskomplexitet: PÅ)
Hjälputrymme: O(1)

Ta bort ett visst element

För att ta bort ett visst element baserat på dess värde måste vi först veta om dess position och vi kan hitta det med funktionen find()

Exempel:

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>

Ta bort element inom ett intervall

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>

Tidskomplexitet: PÅ)
Hjälputrymme: O(1)

Ta bort vektorparelement

Exempel:

C++




#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& sak) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'äpple' }, { 2, 'banan' }, { 3, 'körsbär' }, { 4, 'Guava' } }; // Ta bort elementet vid position 1 (index 0) x.erase(x.begin()); print(x); // Skriv ut [{2,banana}, {3,cherry}, {4,Guava}] // Ta bort elementen på positionerna 0 och 1 (index 0 // och 1) x.erase(x.begin(), x.begin() + 2); print(x); // Skriv ut [{4,Guava}] // Rensa vektorn x.clear(); print(x); // Skriv ut ingenting (endast tomma parenteser) return 0; } // Denna kod är bidragit av Susobhan Akhuli>

>

>

Produktion

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

Tidskomplexitet: PÅ)
Hjälputrymme: O(1)

Fel och undantag

  1. Det har ingen undantag kastgaranti om positionen är giltig.
  2. Visar odefinierat beteende annars.

Ansökan

Givet en lista med heltal, ta bort alla jämna element från vektorn och skriv ut vektorn.

Inmatning:

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

Produktion:

1 3 5 7 9>

Förklaring: 2, 4, 6 och 8 som är jämna och raderade från vektorn

Algoritm

  1. Kör en slinga till vektorns storlek.
  2. Kontrollera om elementet vid varje position är delbart med 2, om ja, ta bort elementet och minska iteratorn.
  3. Skriv ut den sista vektorn.

Nedanstående program implementerar ovanstående tillvägagångssätt.

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>

Tidskomplexitet: O(N) i värsta fall då en radering tar linjär tid.

clear() vs erase(), när ska man använda vad?

klar() tar bort alla element från en vektorbehållare, vilket gör dess storlek 0. Alla element i vektorn tas bort med hjälp av klar() fungera.

radera() funktion, å andra sidan, används för att ta bort specifika element från behållaren eller en rad element från behållaren, vilket minskar dess storlek med antalet avlägsnade element.