Iteratory dwukierunkowe
Lekcja 17 z 23 w kursie C++ – Standardowa biblioteka szablonów w Coddy.
Iterator dwukierunkowy to iterator, który obsługuje wszystkie funkcje iteratora jednokierunkowego, ale obsługuje także dwa operatory dekrementacji (przedrostkowy i przyrostkowy). Iteratory dwukierunkowe mogą więc służyć do uzyskiwania dostępu do elementów sekwencji i ich modyfikowania w obu kierunkach: zarówno w stronę końca, jak i początku.

Jak widać, iterator swobodnego dostępu jest poprawnym iteratorem dwukierunkowym.
Poznamy więc funkcje iteratora dwukierunkowego.
- Operator równości/nierówności: Iterator dwukierunkowy można porównać za pomocą operatora równości lub operatora nierówności. Dwa iteratory są równe tylko wtedy, gdy oba wskazują to samo miejsce.
A == B // Równość
A != B // Nierówność- Wyłuskiwanie
Możemy wyłuskać iterator dwukierunkowy, aby skorzystać z dwóch funkcji: odczytania wartości elementu, na który wskazuje iterator, a także przypisania wartości do tego elementu.
*A = X;
X = *A;- Możliwość inkrementacji/dekrementacji
Iterator dwukierunkowy można inkrementować za pomocą operatora++, ale można go również dekrementować za pomocą operatora--.
A++; // Operator postinkrementacji
++A; // Operator preinkrementacji
A--; // Operator predekrementacji
--A; // Operator postdekrementacji- Możliwość zamiany
Wartość jednego iteratora dwukierunkowego można wymienić lub zamienić na wartość innego.
Możemy zakończyć lekcję podsumowaniem: iterator dwukierunkowy jest bardzo podobny do iteratora jednokierunkowego, który łączy w sobie iterator wejściowy i wyjściowy, ale można go również dekrementować, co oznacza, że umożliwia dostęp do elementów sekwencji w obu kierunkach.
Wyzwanie
ŁatwyOtrzymujesz 10 liczb w jednym wierszu wejściowym. W następnym wierszu otrzymujesz liczbę X, która reprezentuje indeks liczby (indeksy 1-10). Użyj iteratora dwukierunkowego i najpierw wypisz liczby od indeksu X do końca. Następnie wypisz liczby od indeksu X, cofając się do początku.
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10Spróbuj swoich sił
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> numbers;
vector<int>::iterator it1, it2;
int x, y;
// Enter your code here
it1 = numbers.begin();
it1 += x - 1;
for(it1; it1 != numbers.end(); )
cout << << " ";
cout << endl;
for(it2; it2 != numbers.begin() - 1; )
cout << << " ";
return 0;
}Wszystkie lekcje w sekcji C++ – Standardowa biblioteka szablonów
7Podsumowanie
Podsumowanie kursu5Iteratory
IteratoryIteratory wejścioweIteratory wyjścioweIteratory jednokierunkoweIteratory dwukierunkowePoćwicz samodzielnie: Kompilator C++ online