CAtlList und GetPrev/GetNext



  • Warum funktioniert folgendes

    CAtlList<int> Zahlen;
    Zahlen.AddHead(5);
    .
    .
    .
    Zahlen.AddHead(10); 
    
    POSITION pos;
    pos = Zahlen.GedHeadPosition();
    
    while(pos != NULL)
    {
       cout << Zahlen.GetNext(pos);
    }
    

    aber wenn ich es ohne schleife schreiben will, geht es nicht

    CAtlList<int> Zahlen;
    Zahlen.AddHead(5);
    .
    .
    .
    Zahlen.AddHead(10); 
    POSITION pos;
    pos = Zahlen.GetHeadPosition();
    cout << Zahlen.GetNext(pos);
    

    Ich brauche es eigentlich so, das ich mir immer vom letzten Element den Vorgönger brauche.
    Ich füge mit AddHead( ) hin zu und möchte dann einfach mit GetPrev das
    vorherige Element bekommen.
    Das sollte doch möglich sein, oder?

    Grüße,
    milchmann



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Ich verstehe nicht was Du möchtest und was nicht funktioniert.
    Du fügst immer am Kopf der Liste ein. Folgerichtig wird bei Deinem unteren Beispiel 10 ausgegeben.

    Was erwartest Du?



  • Hallo.
    Ich möchte eigentlich immer das vorletzte eingefügte Element erhalten.
    Ich füge z.b. 1 2 3 4 5 ein. Wenn ich nun GetPrev aufrufe, will ich Element 4 erhalten. IRgendwie klappt das nicht mit den Listen.

    CAtlList<int> list;
    for(int c = c; c < 10; <++)
    {
       list.AddHead(i);
    }
    POSITION position;
    position = list.GetTailPosition();
    cout << list.GetPrev(pos);
    

    Jetzt müsste ich doch so eingefügt haben
    0
    1 0
    2 1 0
    use. wobei 0 Tail ist, richtig ?
    Wenn ich mir nun mit GetTailPosition() die Position zurückgeben lasse und
    GetPrev aufrufe müsste doch theoretisch 1 herauskommen. Ich bekomme aber 0.

    grüße


  • Mod

    unreguser schrieb:

    Jetzt müsste ich doch so eingefügt haben
    0
    1 0
    2 1 0
    use. wobei 0 Tail ist, richtig ?
    Wenn ich mir nun mit GetTailPosition() die Position zurückgeben lasse und
    GetPrev aufrufe müsste doch theoretisch 1 herauskommen. Ich bekomme aber 0.

    Wer liest hat mehr vom Programmieren! 🕶
    http://msdn2.microsoft.com/de-de/library/597w29w2(VS.80).aspx
    CObList::GetPrev
    Gets the list element identified by rPosition, then sets rPosition to the POSITION value of the previous entry in the list.


Anmelden zum Antworten