Looping attraverso un vettore in C ++

Looping attraverso un vettore in C ++
Per loop attraverso un vettore significa accedere a tutti gli elementi del vettore dall'inizio alla fine o dalla fine all'inizio. È possibile accedere agli elementi per la lettura o la scrittura (cambiamento di valore) o entrambi.

In C ++, il vettore può essere loopato utilizzando il classico per loop con il pedice (indice) tra le staffe quadrate. Può essere loopato attraverso l'utilizzo di un pertto basato su gamma. Può essere loopato tramite l'utilizzo della funzione For_each () inclusa dalla libreria dell'algoritmo.

Contenuto dell'articolo

- Looping usando il classico per loop

- Looping utilizzando la portata basata sulla gamma

- Looping usando la funzione for_each ()

- Conclusione

Looping usando il classico per loop

Sobbrotteria

Considera il seguente segmento di codice:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
char ch = vtr [2];
cout << ch << endl;

L'output è 'c'. Nella seconda istruzione, dopo il nome del vettore, VTR, sono le staffe quadrate. All'interno delle parentesi quadrate c'è l'indice, che è anche il sottospetto vettoriale. Il conteggio dell'indice inizia da zero. L'indice nel codice è 2, che restituisce il terzo elemento del vettore.

Looping con il pedice

Per loop con il pedice o l'iteratore, il per loop deve essere utilizzato. Si può anche usare il ciclo di while o do-while. La sintassi di un circuito per loop è:

per (inizio_state; while_condition; next/precedente)
// affermazioni

Looping Forward

Il seguente programma utilizza un per loop per loop in avanti, un vettore di caratteri (caratteri), con il pedice:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vettore vtr = 'a', 'b', 'c', 'd', 'e';
per (int i = 0; ichar ch = vtr [i];
cout << ch << ";

cout << endl;
restituzione 0;

L'output è:

A b c d e

La libreria vettoriale deve essere inclusa per l'utilizzo della classe vettoriale. Nella funzione principale C ++, dopo la creazione del vettore è il per loop per loop. Questo per loop può essere riassunto come segue: leggi ogni elemento del vettore che inizia dall'indice, 0; e mentre la fine del vettore non è ancora raggiunta, aumenta l'indice di 1 per leggere l'elemento successivo.

Le parentesi del per loop hanno la logica di cosa leggere in seguito, mentre il blocco del per loop fa la lettura e la stampa sul terminale (console).

In avanti e saltando

Nel loop sopra, la prossima dichiarazione tra parentesi è io++. Questo è lo stesso di:

i = i + 1

Con questo, gli elementi vengono letti uno dopo l'altro nella direzione in avanti. Per leggere ogni altro elemento (saltare un elemento ogni volta), l'argomento successivo tra parentesi, deve essere

i = i + 2; che è lo stesso di I+= 2;

Il seguente codice legge ogni altro personaggio:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
per (int i = 0; ichar ch = vtr [i];
cout << ch << ";

cout << endl;

L'output è:

A c e
Saltare 'B' e 'D'.

In giro all'indietro

Il seguente codice utilizza un per loop per loop all'indietro, un vettore di caratteri (caratteri):

int main ()

vettore vtr = 'a', 'b', 'c', 'd', 'e';
per (int i = vtr.size ()-1; iochar ch = vtr [i];
cout << ch << ";

cout << endl;
restituzione 0;

L'output è:

E d c b a

Il looping inizia dall'indice più alto (4), che è dato da:

VTR.size ()-1

In questo caso, la funzione del membro vettoriale, size () restituisce 5. 1 deve essere sottratto da esso per ottenere il più alto indice di 4 (il conteggio dell'indice inizia da 0). Per il backrewwards, la precedente dichiarazione tra parentesi, è ora "i-".

In giro all'indietro e saltando

Nel loop sopra, la dichiarazione precedente è io-. Questo è lo stesso di:

i = i - 1

Con questo, gli elementi vengono letti uno dopo l'altro nella direzione inversa. Per leggere ogni altro elemento (saltando un elemento ogni volta) all'indietro, l'istruzione precedente deve essere

i = i - 2; che è lo stesso di I- = 2;

Il seguente codice legge ogni altro personaggio, all'indietro:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
per (int i = vtr.size ()-1; iochar ch = vtr [i];
cout << ch << ";

cout << endl;

L'output è:

E c a

Saltare "D" e "B".

Looping usando una classe iteratore

Un vettore può essere in loop con un iteratore. Ci sono sei classi di iterator vettoriali. Solo due sono usati qui. I nomi dei due sono: iteratore e reverse_iterator. Nelle illustrazioni qui, il per loop è ancora usato come loop.

Un iteratore è un puntatore elaborato. Per ogni iteratore, c'è una classe da cui gli oggetti possono essere istanziati. L'oggetto istanziato è l'iteratore.

Looping Forward

Il seguente programma utilizza un per loop per loop in avanti, un vettore di caratteri (caratteri), di iteratore:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vettore vtr = 'a', 'b', 'c', 'd', 'e';
vettore:: iterator iter = vtr.inizio();
per (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
restituzione 0;

L'output è:

A b c d e

Osserva come l'oggetto iteratore, Iter è stato dichiarato. Il vettore ha la funzione membro inizio (). Questo restituisce un iteratore che indica il primo elemento del vettore. C'è un'altra funzione membro, end () per il vettore. Questo restituisce un iteratore che punta subito dopo l'ultimo elemento del vettore. L'iteratore restituito per fine () è molto compatibile per l'iteratore restituito da inizio (). In effetti, sono dello stesso tipo, iteratore.

Nelle parentesi, lo stato iniziale è:

iter = iter;

I mezzi che l'operando sinistro, iter, dovrebbe iniziare la scansione da dove si sta indicando l'operando destro, ITER.

Questo per loop con iteratori può essere riassunto come segue: leggi ogni elemento del vettore che inizia da quello indicato da Iter; e mentre la fine del vettore non è ancora raggiunta, incrementare l'iteratore, ITER, per indicare l'elemento successivo per leggere l'elemento successivo.

Il corpo del per loop è:

char ch = *iter;
cout << ch << ";

L'asterisco in questa posizione, è un operatore indiretto. Ottiene il valore indicato, dall'iteratore

In avanti e saltando con iteratore

Nel loop sopra, l'argomento successivo è, iter++. Questo è lo stesso di:

iter = iter + 1

Più uno con l'iteratore, significa puntare l'elemento successivo. Non significa, aggiungi l'intero 1, all'iteratore. Con questo, gli elementi vengono letti uno dopo l'altro nella direzione in avanti. Per leggere ogni altro elemento (saltando un elemento ogni volta), l'argomento successivo deve essere

iter = iter + 2; che è lo stesso di iter+= 2;

Il seguente codice legge ogni altro personaggio:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
vettore:: iterator iter = vtr.inizio();
per (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

L'output è:

A c e

Saltare 'B' e 'D'.

In giro all'indietro

Il seguente codice utilizza un per loop per loop all'indietro, un vettore di caratteri (caratteri), usando iteratori:

int main ()

vettore vtr = 'a', 'b', 'c', 'd', 'e';
vettore:: inverse_iterator iter = vtr.rbegin ();
per (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
restituzione 0;

L'output è:

E d c b a

Il reverse_iterator è stato usato qui. Il vettore ha una funzione membro corrispondente, rbegin (), che restituisce un iteratore che indica l'ultimo elemento del vettore. C'è un'altra funzione membro, Rend (), che restituisce un iteratore che punta appena prima del primo elemento del vettore.

Per il loop all'indietro, la precedente dichiarazione tra parentesi, è ancora ironicamente, "iter ++". E la condizione di tempo, è ancora ironicamente<'.

In giro all'indietro e saltando

Nel loop sopra, l'istruzione precedente è, iter++. Questo è lo stesso di

iter = iter + 1

Con questo, gli elementi vengono letti uno dopo l'altro nella direzione inversa. Per leggere ogni elemento dell'ordine (saltare un elemento ogni volta) all'indietro, l'istruzione precedente deve essere

iter = iter + 2; che è lo stesso di iter+= 2;

Il seguente codice legge ogni altro personaggio all'indietro:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
vettore:: inverse_iterator iter = vtr.rbegin ();
per (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

L'output è:

E c a

Saltare "D" e "B".

Looping utilizzando la portata basata sulla gamma

La per stato basata sulla gamma è un'istruzione più conveniente da utilizzare per loop attraverso un elenco, come un vettore. Non è veramente usato per saltare o in giro all'indietro. La sintassi è:

per (inizio-stato-essere-opzionale per la dichiarazione-declamazione: for-range-initializer)

Questa volta, ci sono due affermazioni tra parentesi e non tre. La prima affermazione è la dichiarazione di una variabile che contiene l'elemento successivo nel vettore. Questa variabile deve essere dello stesso tipo del tipo di elementi vettoriali. Il secondo argomento dopo il colon è il nome del vettore.

Il seguente codice mostra come può essere utilizzato:

vettore vtr = 'a', 'b', 'c', 'd', 'e';
per (char ch: vtr)
cout << ch << ";

cout << endl;

L'output è:

A b c d e

Looping usando la funzione for_each ()

La funzione For_each () viene utilizzata dalla libreria dell'algoritmo inclusa. La sintassi è:

modello
FUNZIONE CONSTEXPR For_EACH (inputIterator First, inputIterator Last, funzione f);

Il primo argomento è un iteratore che indica il primo elemento del vettore. Il secondo argomento è un iteratore che punta subito dopo l'ultimo elemento del vettore. Il terzo argomento è il nome di una funzione, il cui corpo è quello che sarebbe nel classico per loop. Questa funzione ha un parametro ed è la dichiarazione della variabile che tratterebbe il valore successivo del vettore. Deve essere dello stesso tipo di ogni elemento nel vettore. Questa funzione for_each () non è veramente utilizzata per saltare o loopi all'indietro.

Il seguente programma mostra come utilizzare la chiamata di funzione For_each () e una definizione della funzione associata:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
void func (char ch)
cout << ch << ";

int main ()

vettore vtr = 'a', 'b', 'c', 'd', 'e';
for_each (vtr.inizio (), vtr.end (), func);
cout << endl;
restituzione 0;

L'output è:

A b c d e

Conclusione

Per lottare attraverso un vettore, significa accedere a tutti gli elementi del vettore, dall'inizio alla fine o dalla fine all'inizio. È possibile accedere agli elementi per la lettura o la scrittura (cambiamento di valore) o entrambi.

In C ++, il vettore può essere eseguito attraverso, usando il classico per loop, con il pedice (indice) tra le staffe quadrate; Può essere loopato attraverso l'utilizzo di un pertto basato su gamma; Può anche essere loopato tramite l'utilizzo della funzione For_each () inclusa dalla libreria dell'algoritmo.