vector iterator frage
-
hi, warum ist der cout befehl in der for schleife fehlerhaft? danke!
#include <iostream> #include <vector> class test { public: test() { zaehler++; } static int zaehler; }; using namespace std; int test::zaehler; int main() { test::zaehler = 0; vector<test>testreihe; vector<test>::iterator i; test tester1; testreihe.push_back(tester1); testreihe.push_back(tester1); testreihe.push_back(tester1); for (i = testreihe.begin(); i != testreihe.end(); i++) { cout << *i.zaehler; } cout << "hallo welt" << endl; system("PAUSE"); return 0; }
-
Weil
*>.Probier mal
(*i).zaehleroderi->zaehler.
-
ok danke. Andere frage ich wollte viele objekte von test erstellen ohne die objektbezeichnung ändern zu müssen und glaube das geht wenn man das über eine voidfunktion macht. aber irgendwie klappt es nicht den vector über die parameterliste zu übergeben. warum nicht.
#include <iostream> #include <vector> class test; void neuertest(vector<test>x); class test { public: test() { zaehler++; zahl = zaehler; } static int zaehler; int zahl; }; using namespace std; int test::zaehler; int main() { vector<test>testreihe; vector<test>::iterator i; test::zaehler = 0; neuertest(vector<test>testreihe); neuertest(vector<test>testreihe); neuertest(vector<test>testreihe); for (i = testreihe.begin(); i != testreihe.end(); i++) { cout << (*i).zahl << endl; } cout << "hallo welt" << endl; system("PAUSE"); return 0; } void neuertest(vector<test>x) { test tester; x.push_back(tester); }
-
ah ich bin darauf gekommen, aber warum werden die einträge nach ende der funktion wieder verworfen?
-
Karottenkotze schrieb:
ah ich bin darauf gekommen, aber warum werden die einträge nach ende der funktion wieder verworfen?
Weil du eine Kopie des vectors geändert hast.
-
Karottenkotze schrieb:
ah ich bin darauf gekommen, aber warum werden die einträge nach ende der funktion wieder verworfen?
Besorg dir ein Grundlagenbuch. Da wird der Unterschied zwischen call by value und call by reference erklaert.