Anfängerfrage zu Iteratoren



  • Ein Zeiger ist ein Iterator aber ein Iterator ist kein Zeiger.

    Es wird manchmal falsch rum interpretiert. Insofern sind sie sich schon ähnlich, ein Zeiger ist nichts anderes als ein Spezialfall eines Iterators.



  • SeppJ schrieb:

    vector<bool>::iterator?

    ist kein Container. Meine Aussage galt fuer Container.



  • otze_logout schrieb:

    SeppJ schrieb:

    vector<bool>::iterator?

    ist kein Container. Meine Aussage galt fuer Container.

    Was ist für dich dann ein Container?

    Aber OK, ich kann einen bitset Container implementieren der alle Anforderungen eines Containers entspricht...



  • Shade Of Mine schrieb:

    otze_logout schrieb:

    SeppJ schrieb:

    vector<bool>::iterator?

    ist kein Container. Meine Aussage galt fuer Container.

    Was ist für dich dann ein Container?

    Seine Aussage ist btw Standardisiert. Gab dazu vor kurzem hier einen Thread.



  • Hacker schrieb:

    Seine Aussage ist btw Standardisiert. Gab dazu vor kurzem hier einen Thread.

    Ich wüsste kein requirement für einen Container der mich daran hindert ein bitset zu implementieren. Bis auf dass reference immer value_type& sein muss. Aber das ist ja nun auch echt mal ne sehr zufällige Anforderung.

    Alternativ kann ich mir einen virtuellen Container vorstellen der keine Werte direkt speichert sondern nur eine Formel um die Werte zu generien. zB eben eine Funktion f(x)=2x oder derartiges.



  • Shade Of Mine schrieb:

    Hacker schrieb:

    Seine Aussage ist btw Standardisiert. Gab dazu vor kurzem hier einen Thread.

    ...

    Ich meinte, die Aussage dass std::vector<bool> kein Container ist.


  • Mod

    Hacker schrieb:

    Shade Of Mine schrieb:

    Hacker schrieb:

    Seine Aussage ist btw Standardisiert. Gab dazu vor kurzem hier einen Thread.

    ...

    Ich meinte, die Aussage dass std::vector<bool> kein Container ist.

    Es kommt aber bis auf eine Kleinigkeit der Idee sehr nahe. Es ist nicht so schwer, sich reguläre Container vorzustellen, die ein bisschen komplexer aufgebaut sind. Meinetwegen ein Container zum Verwalten von chars, der aus irgendeinem Grund intern die Daten als long long hält (vielleicht so eine Art deque für Arme). Da könnte man leicht die Containeranforderungen erfüllen, der Iterator wäre dann aber doch ein komplizierteres Konstrukt.

    Apropos deque: Ein deque-Iterator hat beim GCC im Release eine Größe von 4 Pointern. Überhaupt kann ich mir bei einer deque nicht vorstellen, dass es überhaupt möglich ist, einen Iterator zu konstruieren, der nur mit einem Pointer auskommt.

    Nochmal eine Übersicht über den aktuellen GCC:

    Vector: 8
    Vector<bool>: 16
    List: 8
    Deque: 32
    Map: 8
    Set: 8
    


  • SeppJ schrieb:

    teres Konstrukt.

    Apropos deque: Ein deque-Iterator hat beim GCC im Release eine Größe von 4 Pointern. Überhaupt kann ich mir bei einer deque nicht vorstellen, dass es überhaupt möglich ist, einen Iterator zu konstruieren, der nur mit einem Pointer auskommt.

    Vielleicht ist der Iterator selbst ein Knoten... warte, ich bin schon wieder verwirrt mit diesem Pointergefummel und verketten Listen... 😃


  • Mod

    Hacker schrieb:

    SeppJ schrieb:

    teres Konstrukt.

    Apropos deque: Ein deque-Iterator hat beim GCC im Release eine Größe von 4 Pointern. Überhaupt kann ich mir bei einer deque nicht vorstellen, dass es überhaupt möglich ist, einen Iterator zu konstruieren, der nur mit einem Pointer auskommt.

    Vielleicht ist der Iterator selbst ein Knoten... warte, ich bin schon wieder verwirrt mit diesem Pointergefummel und verketten Listen... 😃

    Auf jeden Fall bist du jetzt Mal am Zuge, eine gültige (denk an die Komplexitätsanforderungen!) deque zu konstruieren, deren (gültiger) Iterator mit einem einzigen Pointer auskommt. Ansonsten wirst du, wie du es schon vor 3 Seiten hättest tun sollen, wohl eingestehen müssen, dass Pi absolut Recht hat. (und otze wird das wohl auch müssen)



  • Shade Of Mine schrieb:

    Bis auf dass reference immer value_type& sein muss. Aber das ist ja nun auch echt mal ne sehr zufällige Anforderung.

    Könnte man nicht für value_type z.B. BitValue nehmen und dann als referene BitValue& ?



  • SeppJ schrieb:

    Hacker schrieb:

    SeppJ schrieb:

    teres Konstrukt.

    Apropos deque: Ein deque-Iterator hat beim GCC im Release eine Größe von 4 Pointern. Überhaupt kann ich mir bei einer deque nicht vorstellen, dass es überhaupt möglich ist, einen Iterator zu konstruieren, der nur mit einem Pointer auskommt.

    Vielleicht ist der Iterator selbst ein Knoten... warte, ich bin schon wieder verwirrt mit diesem Pointergefummel und verketten Listen... 😃

    Auf jeden Fall bist du jetzt Mal am Zuge, eine gültige (denk an die Komplexitätsanforderungen!) deque zu konstruieren, deren (gültiger) Iterator mit einem einzigen Pointer auskommt. Ansonsten wirst du, wie du es schon vor 3 Seiten hättest tun sollen, wohl eingestehen müssen, dass Pi absolut Recht hat. (und otze wird das wohl auch müssen)

    Ja, leider hat PI Recht. Wie ich auch eben in meinem GCC gefunden hab, hat ein Deque-Iterator folgende Member-Variablen:

    _Tp* _M_cur;
          _Tp* _M_first;
          _Tp* _M_last;
          _Tp** _M_node;
    

    Jaja, ich geb schon auf, ich bin dumm.



  • Hacker schrieb:

    Jaja, ich geb schon auf, ich bin dumm.

    Nö. Du bist nur naiv und unerfahren.


Anmelden zum Antworten