"Thormod Johansen" <test@invalid.invalid> wrote in message
news:eu8os9$ib3$1@news.net.uni-c.dk...
> Hej,
>
> Jeg sidder og roder lidt med C++ og container-klasserne Vector og List.
Deres navne staves med små bogstaver: "vector" og "list" eller mere præcist
"std::vector" og "std::list"
> Er det rigtigt forstået, at der er forskel på den iterator, man får, fra
> henholdsvis vector og list?
Ja.
> Så vidst jeg lige har kunne læse mig til, er vectors iterator en random
> access iterator, så man kan sige
>
> Vector<int>::iterator iter = vec.begin();
vector<int>
> iter += 10;
Ja (givet der er mere end 10 elementer i vectoren.
>
> For at tilgå det 10'ende element i vectoren vec. Det virker ikke som om
> man kan det med lists iterator. Der kan jeg kun sige iter++. Hvad har jeg
> af muligheder her?
Iteratoren til "std::list" har egenskaber gældende for bidirectionel
iterator.
Den kan bl.a. både incrementeres (gå fremad) og decrementeres (gå tilbage).
For yderligere information, se f.eks.
http://www.sgi.com/tech/stl/BidirectionalIterator.html
eller søg på Google eller kig i et par gode bøger
Hvis du gerne vil 10 elementer frem i en list, kan man benytte algoritmen
"advance" fra headerfilen "iterator".
Altså:
#include <iterator>
//...
list<int> i = l.begin();
advance(i, 10);
--
Venlig hilsen
Mogens Hansen