Elemente entfernen: pop_back()
Das Gegenstück zu push_back() ist die Methode pop_back(): Sie entfernt das letzte Element eines Vektors. In die Klammern schreibst du nichts, die Klammern selbst musst du aber schreiben.
std::vector<std::string> farben = {"blau", "grün", "rosa"};
farben.pop_back();
std::cout << farben.size() << std::endl;
std::cout << farben[farben.size() - 1] << std::endl;Das gibt aus:
2
grünDas Element "rosa" ist weg, und das letzte Element ist jetzt "grün".
Die Methode pop_back() entfernt das Element nur, sie gibt dir nichts zurück. Brauchst du das entfernte Element, lies es, bevor du es entfernst:
std::vector<std::string> farben = {"blau", "grün", "rosa"};
std::string letzteFarbe = farben[farben.size() - 1];
farben.pop_back();
std::cout << "Entfernt: " << letzteFarbe << std::endl;
std::cout << "Übrig: " << farben.size() << std::endl;Das gibt aus:
Entfernt: rosa
Übrig: 2Versuchst du, das Ergebnis von pop_back() in einer Variablen zu speichern, std::string letzteFarbe = farben.pop_back();, lässt sich das Programm nicht kompilieren:
main.cpp:7:17: error: no viable conversion from 'void' to 'std::string' (aka 'basic_string<char>')Die Meldung sagt, dass sich void nicht in std::string umwandeln lässt. void bedeutet „nichts“: pop_back() liefert keinen Wert, also gibt es nichts, was in der Variablen gespeichert werden könnte. Dem Wort void begegnest du in der Lektion über Funktionen wieder.
Entferne nie etwas aus einem leeren Vektor. Es gibt nichts zu entfernen, und das Programm kann sich dann unvorhersehbar verhalten, genau wie bei einem Index außerhalb des Vektors.
So schreibst du es:
Anweisungen
- 1
Evas Projekt ist beendet, und sie verlässt das Team. Speichere den letzten Kollegen in einer
std::string-Variablen mit dem NamenausscheidenderKollege(berechne den Index mitsize() - 1). Entferne sie dann mitpop_back()auskollegen. - 2
Gib untereinander aus, wer geht und wie viele Kollegen bleiben. Die Ausgabe sollte die Zeilen
Geht: EvaundÜbrig: 3enthalten.