std::vector::back
-
Tach!
Ich bin gerade über std::vector::back gestolpert.
Da wird ein Beispiel gezeigt:#include <iostream> #include <vector> using namespace std; int main () { vector<int> myvector; myvector.push_back(10); while (myvector.back() != 0) { myvector.push_back ( myvector.back() -1 ); // ****** } cout << "myvector contains:"; for (unsigned i=0; i<myvector.size() ; i++) cout << " " << myvector[i]; cout << endl; return 0; }Output:
myvector contains: 10 9 8 7 6 5 4 3 2 1 0
****** Die Stelle wo die Sternchen sind ist für mich unverständlich...
Wenn ich myvector.push_back(myvector.back() - 1 ) schreibe, sollte doch immer 9 rauskommen. Oder wie ist das? Stehe gerade voll neben mir

mit freundlichen grueßen Jonny_Bravo
-
Jonny_Bravo schrieb:
Wenn ich myvector.push_back(myvector.back() - 1 ) schreibe, sollte doch immer 9 rauskommen. Oder wie ist das? Stehe gerade voll neben mir

Nur beim ersten Aufruf wird 9 zurückgegeben. Danach wurde die Neun per
push_back()angehängt, und das neue letzte Element ist 9. Das bedeutet,back()-1entspricht nun9-1, also 8.
-
Wieso immer? Wenn du einmal das gemacht hast:
vec.push_back(vec.back() - 1));wird das neue Ende (push_back) 9 sein. Wenn du nun diese Funktion wieder aufrufst, wird 9 - 1 angehängt. Damit ist das neue back 8 usw.
-
ahhhhhhhhh logisch!
Danke euch