Obecnie używam iteratora do przeszukiwania wektora i testowania jego elementów. Mam dostęp do elementów za pomocąCzy mogę wykonać arytmetykę wskaźnikową na STL :: vector :: iterator
std::vector<int>::iterator it;
if (*it == 0);
Czy mogę korzystać z tego samego wskaźnik arytmetyczną stylu logikę również testować następny element (bez zmieniania mojego iterator)?
ja najpierw trzeba sprawdzić, czy będzie ona naciskać iterator poza granicami
if (it != myvec.end())
Następnie przetestować zarówno bieżący element i następny element
if (*it == 1 && *(it + 1) == 1)
To działa jak oczekuję od stosując wskaźniki?
Tak, nie mogę wykonywać operacji arytmetycznych na 'list :: iterator', prawda? – Alcott
@Alcott - poprawny. Iterator list :: iterator jest dwukierunkowy i nie obsługuje dostępu losowego. Możesz użyć 'std :: advance', aby wykonać ruch za pomocą pojedynczego wywołania, ale złożoność zaawansowania to' O (n) 'dla list (gdzie to byłoby' O (1) 'dla wektora). –