Iterator wskazujący na ostatni element w liście

0

Chciałbym wywowałać pętlę zaczynając od ostatniego elementu, aby wszystko działało używam:

for(list<int>::iterator it=--L.end();... ;... ) 

Dlaczego nie można napisać list<int>::iterator it=L.end()-1; ?

4

Zerknij do dokumentacji na pozycje rbegin() i rend()
Można też std::prev(L.end())

3

@carlosmay odpowiedział na pytanie, które prawdopodobnie chciałeś zadać. Natomiast jeśli chodzi o pytanie, które zadałeś: ponieważ lista nie ma random access iteratorów, nie ma też operatora [], a jej iteratory można tylko inkrementować/dekrementować. Przesunięcie iteratora o n pozycji ma złożoność O(n), więc zdecydowano, że operacje zdradliwie kosztowne nie będą łatwo dostępne - L[20] lub L.begin()+20 to by było 19 inkrementacji i skakania po kolejnych elementach w pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1