iteratoren benutzen



  • for (auto it = test.begin(); it != test.end(); ++it)
    {
    
    }
    

    Was genau kann ich jetzt mit diesem Iterator machen?
    Wenn mein test jetzt z.B. ein std::vector wäre, dann wird darüber iteriert, aber wieso kann ich in der Schleife nicht sowas machen?

    *it.push_back(/* irgendwas */);
    


  • Der Iterator bezieht sich auf die Elemente in der Sequenz, nicht auf den Sequenzcontainer selber. Du kannst somit duch *it die Werte im vector lesen bzw. schreiben.



  • Was willst du erreichen, in der Schleife?
    Ein Element hinten einfügen? Dann ersetze in deinem Code einfach *it durch test , aber das dürfte dir doch bekannt sein.
    Ein Element hinter dem Iterator einfügen? Dann musst du einfach test.insert(iter + 1, /* irgendwas */); schreiben.

    Was genau kann ich jetzt mit diesem Iterator machen?

    it hat in dem Fall einfach den Typ test::iterator . Du kannst mit it machen, was du auch mit jedem anderen Iterator diesen Typs machen kannst.

    aber wieso kann ich in der Schleife nicht sowas machen?

    Dieser Satz und das darauf Folgende bereiten mir Sorgen.



  • iteratoren sind objekte die den zugriff auf elemente einer liste (egal ob vector, array, map, list, deque usw.) kapseln.

    nach aussen hin sind alle iteratoren etwa gleich (ok, die standardbibliothek unterteilt die iteratoren in kategorien wie forward, bidirektionale, usw iteratoren) und bieten es an, dass du mit ihnen den ganzen container durchlaufen kannst (it++ oder ++it mit test auf it != container.end()).

    desweiteren bieten sie noch schreibenden und lesenden zugriff (es sei denn du hast einen const_iterator) auf das aktuelle element (*it = 5 bzw. int i = *it)

    ein iterator weiss im normalfall nichts über seinen container den er durchläuft.

    die STL funktionen und einige memberfunktionen der container verwenden iteratoren als parameter



  • Wieso erklärst du ihm das? Wenn er keine Ahnung hat, was Iteratoren sind, ist er sowieso hier besser beraten. Oder hier.



  • Warum steht der Lehrer vor der Klasse sondern legt ihr nicht einfach ein Buch hin und stellt einen Pappaufsteller hin? 🙂



  • Decimad schrieb:

    Warum steht der Lehrer vor der Klasse sondern legt ihr nicht einfach ein Buch hin und stellt einen Pappaufsteller hin? 🙂

    👍
    Einfach ein Grundlagenbuch geben, alle paar Tage treffen um Fragen zu klären und Basta :xmas2:



  • Würde ich offen gesagt auch bevorzugen, und das ist nicht mal scherzhaft gemeint.


Anmelden zum Antworten