Einen neuen Vektor aufbauen
Manchmal willst du nicht nur wissen, wie viele Elemente eine Bedingung erfüllen, sondern auch, welche. Beginne dann mit einem leeren Vektor und füge jedes passende Element mit push_back() hinzu:
std::vector<int> temperaturen = {18, 24, 27, 15, 31, 22, 29};
std::vector<int> heisse = {};
for (int temperatur : temperaturen) {
if (temperatur >= 25) {
heisse.push_back(temperatur);
}
}
std::cout << "Heiße Tage: " << heisse.size() << std::endl;
for (int temperatur : heisse) {
std::cout << temperatur << " ";
}
std::cout << std::endl;Heiße Tage: 3
27 31 29 std::vector<int> heisse = {}; erstellt einen Vektor ohne Elemente. Du kannst auch einfach std::vector<int> heisse; schreiben: Anders als ein int ohne Wert enthält ein Vektor ohne Wert keinen Zufallswert, er ist leer. Jedes push_back() fügt ein Element am Ende hinzu, der neue Vektor behält also die Reihenfolge des ursprünglichen. Der ursprüngliche Vektor bleibt, wie er war, und heisse.size() sagt dir, wie viele Elemente du gesammelt hast. Um den neuen Vektor auszugeben, brauchst du eine weitere Schleife, denn std::cout << heisse funktioniert nicht.
Der neue Vektor muss nicht dieselben Werte enthalten. Diese Schleife baut einen Vektor, in dem jede Zahl verdoppelt ist:
std::vector<int> zahlen = {3, 8, 5};
std::vector<int> verdoppelt = {};
for (int zahl : zahlen) {
verdoppelt.push_back(zahl * 2);
}
for (int zahl : verdoppelt) {
std::cout << zahl << " ";
}
std::cout << std::endl;6 16 10 Erstelle den neuen Vektor vor der Schleife, genau wie eine Summe oder einen Zähler. In der Schleife würde jeder Durchlauf mit einem neuen leeren Vektor beginnen, und nach der Schleife gäbe es den Vektor gar nicht mehr.
So schreibst du es:
Anweisungen
- 1
Erstelle einen leeren Vektor
geradeZahlenvom Typstd::vector<int>. Gehe dannzahlendurch und füge jede gerade Zahl mitpush_back()zugeradeZahlenhinzu. Eine Zahl ist gerade, wennzahl % 2 == 0gilt. - 2
Gib nach dieser Schleife die Elemente von
geradeZahlenin einer Zeile aus, nach dem TextGerade:und durch Leerzeichen getrennt, so wie das Programm alle Zahlen ausgibt. Die Ausgabe istGerade: 12 30 18 4. - 3
Gib in der nächsten Zeile mit
geradeZahlen.size()aus, wie viele gerade Zahlen es gibt:Anzahl: 4.