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; ?
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; ?
Zerknij do dokumentacji na pozycje rbegin()
i rend()
Można też std::prev(L.end())
@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.