Voraussetzung: Vektor in C++
Vektoren sind mit dynamischen Arrays identisch und können ihre Größe automatisch ändern, wenn ein Element eingefügt oder gelöscht wird, wobei ihre Speicherung automatisch vom Container verwaltet wird.
vector::clear()
Der klar() Die Funktion wird verwendet, um alle Elemente des Vektorcontainers zu entfernen und ihn so auf die Größe 0 zu bringen.
Syntax:
vector_name .clear()>
Parameter: Es werden keine Parameter übergeben.
Ergebnis: Alle Elemente des Vektors werden entfernt (oder zerstört).
Beispiel:
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;> }> |
>
>
Ausgabe
No Output>
Zeitkomplexität: AN)
Hilfsraum: O(1)
Alle Elemente werden nacheinander zerstört.
Fehler und Ausnahmen
- Es gibt eine Ausnahmegarantie.
- Es zeigt einen Fehler an, wenn ein Parameter übergeben wird.
vector::erase()
löschen() Die Funktion wird verwendet, um Elemente aus einem Container an der angegebenen Position oder im angegebenen Bereich zu entfernen.
Syntax:
vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>
Parameter:
- Position des zu entfernenden Elements in Form eines Iterators.
- Der Bereich wird mithilfe von Start- und End-Iteratoren angegeben.
Ergebnis: Elemente werden von der angegebenen Position des Containers entfernt.
Beispiel:
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>
Entfernen ein Element aus A besondere Position
Beispiel:
C++
// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector{ 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;> }> |
>
>Ausgabe
Panda schmelzen
2 3 4 5>
Zeitkomplexität: AN)
Hilfsraum: O(1)
Entfernen eines bestimmten Elements
Um ein bestimmtes Element basierend auf seinem Wert zu löschen, müssen wir zunächst seine Position kennen und können es mithilfe der Funktion find() finden
Beispiel:
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;> }> |
>
>Ausgabe
vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>
Elemente innerhalb eines Bereichs entfernen
C++
// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector{ 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;> }> |
>
>Ausgabe
4 5>
Zeitkomplexität: AN)
Hilfsraum: O(1)
Entfernen von Vektorpaarelementen
Beispiel:
C++
#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& Ding) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'apple' }, { 2, 'banana' }, { 3, 'cherry' }, { 4, 'Guave' } }; // Element an Position 1 (Index 0) entfernen x.erase(x.begin()); print(x); // Print [{2,banana}, {3,cherry}, {4,Guava}] // Elemente an den Positionen 0 und 1 (Indizes 0 // und 1) entfernen x.erase(x.begin(), x.begin() + 2); print(x); // Drucken [{4,Guava}] // Den Vektor löschen x.clear(); print(x); // Nichts ausgeben (nur leere Klammern) return 0; } // Dieser Code wurde von Susobhan Akhuli beigesteuert> |
>
>Ausgabe
[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>
Zeitkomplexität: AN)
Hilfsraum: O(1)
Fehler und Ausnahmen
- Es gibt keine Ausnahmegarantie, wenn die Position gültig ist.
- Zeigt andernfalls undefiniertes Verhalten.
Anwendung
Entfernen Sie bei einer gegebenen Liste von Ganzzahlen alle geraden Elemente aus dem Vektor und drucken Sie den Vektor aus.
Eingang:
1, 2, 3, 4, 5, 6, 7, 8, 9>
Ausgabe:
1 3 5 7 9>
Erläuterung: 2, 4, 6 und 8, die gerade sind und aus dem Vektor gelöscht werden
Algorithmus
- Führen Sie eine Schleife zur Größe des Vektors aus.
- Überprüfen Sie, ob das Element an jeder Position durch 2 teilbar ist. Wenn ja, entfernen Sie das Element und dekrementieren Sie den Iterator.
- Drucken Sie den endgültigen Vektor.
Das folgende Programm implementiert den oben genannten Ansatz.
C++
// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvector{ 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;> }> |
>
>Ausgabe
1 3 5 7 9>
Zeitkomplexität: Im schlimmsten Fall ist O(N), da das Löschen eine lineare Zeit benötigt.
clear() vs erase(), wann was verwenden?
klar() Entfernt alle Elemente aus einem Vektorcontainer, wodurch seine Größe 0 wird. Alle Elemente des Vektors werden mit entfernt klar() Funktion.
löschen() Die Funktion hingegen wird verwendet, um bestimmte Elemente oder eine Reihe von Elementen aus dem Container zu entfernen und so dessen Größe um die Anzahl der entfernten Elemente zu reduzieren.