Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Łatwy

Otrzymujesz 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
6
Output
60 70 80 90 100 60 50 40 30 20 10

Spró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

Poćwicz samodzielnie: Kompilator C++ online