Iteratori bidirezionali
Lezione 17 di 23 del corso C++ - Libreria standard dei template di Coddy.
Iteratore bidirezionale è un iteratore che supporta tutte le funzionalità di un iteratore in avanti, ma supporta anche i due operatori di decremento (pre e post). Quindi, gli iteratori bidirezionali possono essere usati per accedere e modificare una sequenza di elementi in entrambe le direzioni, verso la fine e verso l'inizio.

Come possiamo vedere, l'iteratore ad accesso casuale è un iteratore bidirezionale valido.
Impareremo quindi le funzionalità di un iteratore bidirezionale.
- Operatore di uguaglianza/disuguaglianza: un iteratore bidirezionale può essere confrontato usando un operatore di uguaglianza o un operatore di disuguaglianza. I due iteratori sono uguali solo quando puntano entrambi alla stessa posizione.
A == B // Uguaglianza
A != B // Disuguaglianza- Dereferenziazione
Possiamo dereferenziare un iteratore bidirezionale per usarne le due funzionalità: accedere al valore dell'elemento a cui punta l'iteratore e assegnare un valore all'elemento a cui punta l'iteratore.
*A = X;
X = *A;- Incrementabile/decrementabile
Un iteratore bidirezionale può essere incrementato usando l'operatore++, ma può anche essere decrementato usando l'operatore--.
A++; // Operatore di post-incremento
++A; // Operatore di pre-incremento
A--; // Operatore di pre-decremento
--A; // Operatore di post-decremento- Scambiabile
Il valore di un iteratore bidirezionale può essere scambiato con quello di un altro.
Possiamo concludere la lezione riassumendo che l'iteratore bidirezionale è molto simile all'iteratore in avanti, che riunisce gli iteratori di input e output in uno solo, ma può anche essere decrementato, il che significa che può accedere agli elementi della sequenza in entrambe le direzioni.
Sfida
FacileTi vengono forniti 10 numeri su una riga dell'input. Nella riga successiva ti viene fornito un numero X che rappresenta l'indice del numero (indici 1-10). Usa un iteratore bidirezionale e stampa prima i numeri a partire dall'indice X fino alla fine. Dopodiché stampa i numeri a partire dall'indice X procedendo all'indietro fino all'inizio.
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10Provalo tu
#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;
}Tutte le lezioni di C++ - Libreria standard dei template
Esercitati da solo: Compilatore C++ online