Größe und letztes Element
Oft weißt du nicht, wie viele Elemente ein Vektor hat. Vielleicht hat ihn ein anderer Teil des Programms gefüllt, oder die Zahl der Elemente ändert sich, während das Programm läuft (Elemente hinzuzufügen und zu entfernen lernst du bald). So findest du es heraus:
std::vector<std::string> schueler = {"Lena", "Boris", "Nancy", "David", "Eva"};
std::cout << schueler.size() << std::endl;Das gibt aus:
5size() ist eine Methode: ein Befehl, der zu einem Wert gehört, hier zum Vektor. Du schreibst sie hinter den Namen der Variablen, durch einen Punkt getrennt. Das nennt man Punktnotation. schueler.size() bedeutet also „die Größe des Vektors schueler“. Eine Methode zu benutzen heißt, sie aufzurufen. Auf den Namen einer Methode folgen immer runde Klammern, auch wenn nichts darin steht. Vektoren haben weitere Methoden, von denen du in dieser Lektion noch ein paar kennenlernst.
Die Methode size() liefert dir eine Zahl, die du in einer int-Variablen speichern, in Rechnungen verwenden oder mit einer Beschriftung ausgeben kannst:
int anzahlSchueler = schueler.size();
std::cout << "Schüler: " << anzahlSchueler << std::endl;Das gibt aus:
Schüler: 5Vergisst du die Klammern und schreibst int anzahlSchueler = schueler.size;, lässt sich das Programm nicht kompilieren:
main.cpp:7:35: error: reference to non-static member function must be called; did you mean to call it with no arguments?Die Meldung sagt, dass die Methode aufgerufen werden muss, und fragt, ob du sie ohne etwas in den Klammern aufrufen wolltest. Füge einfach () hinzu.
Mit size() weißt du, wo das letzte Element steht. Die Indizes beginnen bei 0, also ist der letzte Index immer um eins kleiner als die Anzahl der Elemente: Ein Vektor mit 5 Elementen hat die Indizes 0, 1, 2, 3 und 4. Das letzte Element steht also am Index schueler.size() - 1:
std::cout << schueler[schueler.size() - 1] << std::endl;Das gibt aus:
EvaDas Programm berechnet zuerst den Index in den eckigen Klammern (5 − 1 = 4) und liest dann das Element an diesem Index. So findest du das letzte Element eines Vektors beliebiger Länge, auch wenn sich seine Länge ändert. Ein häufiger Fehler ist, das - 1 zu vergessen: schueler[schueler.size()] fragt nach dem Index 5, wo es kein Element gibt. Was dann passiert, siehst du in der nächsten Übung.
So schreibst du es:
Anweisungen
- 1
Gib mit
size()die Anzahl der Kollegen mit einer Beschriftung aus. Die Ausgabe sollte die ZeileKollegen: 3enthalten. - 2
Erstelle eine
std::string-Variable mit dem NamenletzterKollegeund speichere darin das letzte Element vonkollegen. Berechne den Index mitsize() - 1, schreibe nicht die Zahl2. - 3
Gib
letzterKollegemit einer Beschriftung aus:Letzter: Lena.