Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CAtlList

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.09.2007, 09:57 Uhr
~qbert
Gast


Hallo,
ich hab eine Frage zur CAtlList

Wenn ich eine CAtlList erzeuge und Daten darin abspeicher und dann mit GetPrev oder GetNext
auf ein vorheriges oder nachfolgendes Element zugreifen möchte geht das nur mit einer Schleife ?
Beispiel

C++:
CAtlList<int> Liste;
for(int i = 0; i<5; i++)
{
    Liste.AddHead(i);
}



Wenn ich nun, sagen wir mal vom letzten Element den Vorgänger haben möchte, müsste ich
doch folgendes tun.


C++:
POSITION pos;
pos = Liste.GetHeadPosition();
int i = Liste.GetPrev(pos);



Aber das funktioniert nicht. Schreibe ich aber das in eine Schleife und lasse mir nacheinander
alle abgespeicherten Elemente anzeigen, funktioniert das.
Ich bräuchte aber immer nur das Element, das vor dem letzten eingefügten Element steht.

grüße,
qbert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.09.2007, 10:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
pos = Liste.GetHeadPosition(); // <-- liefert pos von "element 0"
int i = Liste.GetPrev(pos); // < -- liefert "element -1", das geht natürlich schief!



du musst wohl eher

"GetTailPosition" nehmen (wenn es das gibt)

ist ja immer so:

head item item item item ... item tail
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.09.2007, 12:18 Uhr
~qbert
Gast


Ich dachte der Kopf liegt immer "vorne"
Also Tail .... Head. Wierum liegt diese Liste nun ?
Läuft sie von Links nach rechts oder anders herum wenn ich AddHead mache ?

grüße,
qbert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.09.2007, 12:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja kopf liegt auch immer vorne von links nach rechts!


Code:
head -> item -> item -> item -> ... -> item -> tail




d.h das vorletzte item ist


Code:
tail->prev



der head ist immer das erste item in der liste, tail immer das letzte

AddHead fügt das item immer vor dem aktuellen head ein und setzt diesen auf das aktuell eingefügte item.

Dein Beispiel oben macht folgendes:


Code:

0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
^       ^
h       t
e       a
a       i
d       l


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.09.2007, 19:56 Uhr
~qbert
Gast


Hallo, also ich habs jetzt mal probiert.

C++:
CAtlList<int> Liste;
for(int i = 0; i<5; i++)
{
    Liste.AddHead(i);
}
POSITION pos = Liste.GetTailPosition();
cout << Liste.GetPrev(pos);



Jetzt füge ich, wie du gesagt hast, immer vor dem aktuellen Head ein.
Wenn ich jetzt mir die Tail Position geben lasse und dann davon das vorhergehende Element
müsste ich 1 bekommen. Aber ich bekomme bei mir 4.
da haut doch irgendwas nicht hin... mit dieser Liste

grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: