Einen Vektor erstellen
In der Lektion über Bedingungen hast du gelernt, wie ein Programm Entscheidungen trifft. In dieser Lektion lernst du, mehrere Werte zusammen zu speichern.
Stell dir vor, du willst deine Punktzahlen aus fünf Tests speichern. Mit dem, was du bisher kennst, bräuchtest du fünf Variablen:
int punkte1 = 85;
int punkte2 = 92;
int punkte3 = 78;
int punkte4 = 90;
int punkte5 = 88;Das ist viel Tipparbeit. Und was, wenn es einen sechsten Test gibt? Für jede neue Punktzahl müsstest du eine neue Variable erstellen. Dafür gibt es den Vektor. Ein Vektor speichert mehrere Werte desselben Typs in einer Variablen:
std::vector<int> punkte = {85, 92, 78, 90, 88};Die Werte in einem Vektor heißen seine Elemente. Dieser Vektor hat fünf Elemente, und ihre Reihenfolge ist wichtig: 85 ist das erste Element, 88 das letzte.
Gehen wir es von links nach rechts durch:
std::vectorsagt, dass du einen Vektor erstellst. Er stammt aus der Standardbibliothek, genau wiestd::coutundstd::string, und beginnt deshalb mitstd::.- In den spitzen Klammern
< >steht der Datentyp der Elemente.std::vector<int>ist ein Vektor aus Ganzzahlen,std::vector<double>ein Vektor aus Dezimalzahlen undstd::vector<std::string>ein Vektor aus Texten. punkteist der Name der Variablen. Für ihn gelten dieselben Regeln wie für die Namen anderer Variablen.- In den geschweiften Klammern
{ }stehen die Elemente, durch Kommas getrennt.
Um Vektoren zu benutzen, schreibe #include <vector> an den Anfang deines Programms, genau wie #include <string> für Texte. Manchmal funktioniert ein Programm auch ohne, weil ein anderes #include Vektoren mitbringt. Verlass dich nicht darauf und schreibe es immer.
Weitere Beispiele:
std::vector<std::string> namen = {"Anna", "Max", "Lena"};
std::vector<double> preise = {29.9, 149.9, 99.9};
std::vector<int> punkte;Der Vektor punkte hat keine Elemente, er ist leer. Anders als eine int-Variable ohne Startwert enthält er keine zufälligen Werte. Es ist einfach noch nichts darin. Wie du einem Vektor Elemente hinzufügst, lernst du später in dieser Lektion.
Alle Elemente müssen den Typ haben, der in den spitzen Klammern steht. Steckst du eine Dezimalzahl in einen Vektor aus Ganzzahlen, lässt sich das Programm nicht kompilieren:
std::vector<int> punkte = {85, 92.5, 78};main.cpp:6:36: error: type 'double' cannot be narrowed to 'value_type' (aka 'int') in initializer list [-Wc++11-narrowing]Die Meldung sagt, dass ein double-Wert nicht auf den Typ der Elemente des Vektors (value_type) eingeengt werden kann, und der ist int. Der Nachkommateil ginge verloren, deshalb meldet C++ stattdessen einen Fehler. Den Namen in eckigen Klammern am Ende der Meldung kannst du ignorieren.
Einen ganzen Vektor kannst du nicht auf einmal ausgeben, nur Element für Element. Um ein Element auszugeben, schreibst du seine Nummer in eckigen Klammern hinter den Namen des Vektors. namen[0] ist das erste Element des Vektors namen:
std::cout << namen[0] << std::endl;Das gibt aus:
AnnaWarum die Zählung bei null beginnt, erfährst du in der nächsten Übung. Das Programm im Editor gibt den ersten Kollegen genauso aus.
So schreibst du es:
Anweisungen
- 1
Erstelle unter dem Kommentar einen Vektor aus Ganzzahlen mit dem Namen
punkteund den Elementen85,92,78und90, in dieser Reihenfolge. - 2
Gib unter dem Vektor die erste Punktzahl mit einer Beschriftung aus, genau wie das Programm den ersten Kollegen ausgibt. Die Ausgabe sollte die Zeile
Erste Punktzahl: 85enthalten.