/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Iterator i lænket liste
Fra : Klaus Petersen


Dato : 06-04-03 12:36

Hej NG.

Jeg har implementeret en linked list, men jeg er lidt i vildrede mht.
hvordan man laver iterator til en linked list på den mest korrekte måde.

Problemet er navnligt når der slettes fra listen.

I så fald vil iteratoren blive ugyldig, i fald at den peger på det element,
der slettes ?

Hvad kan man gøre for at undgå ovenstående problem?

Klaus.



 
 
Morten S. (06-04-2003)
Kommentar
Fra : Morten S.


Dato : 06-04-03 21:42

> I så fald vil iteratoren blive ugyldig, i fald at den peger på det
element,
> der slettes ?
>
> Hvad kan man gøre for at undgå ovenstående problem?
>
elementet som ønskes slettet er nummer n.

sæt iteratoren til at pege på n+1.
sæt n-1 til at pege på n+1
sæt iterator til at pege på n-1
iterator->next->next->delete




Peer Jensen (07-04-2003)
Kommentar
Fra : Peer Jensen


Dato : 07-04-03 00:58

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
news:b6p3eu$av2$1@sunsite.dk...
> Hej NG.
>
> Jeg har implementeret en linked list, men jeg er lidt i vildrede mht.
> hvordan man laver iterator til en linked list på den mest korrekte måde.
>
> Problemet er navnligt når der slettes fra listen.
>
> I så fald vil iteratoren blive ugyldig, i fald at den peger på det
element,
> der slettes ?
>
> Hvad kan man gøre for at undgå ovenstående problem?

Eksempel:

LISTSTRUCT::iterator itr;
for (itr = myList.begin(); itr != myList.end(); ++itr)
{
itr = myList.erase(itr);
itr--;
}

--
/Peer

It's not a bug... - it's a feature!




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste