Iteterando un STD impostato in C ++

Iteterando un STD impostato in C ++
Quello che segue è un set di nomi di frutta: "Passione Fruit", "Banana", "Watermelon", "Blackberry", "Grape"

In C ++, un set come digitato in questo modo, è un set letterale o un array letterale. È anche inizializer_list. In C ++, un iteratore è una classe. Sebbene sia una classe, il suo oggetto si comporta come un puntatore. Quando viene incrementato, indica l'elemento successivo. Quando viene decrementato, indica l'elemento precedente. Proprio come il puntatore può essere derenziato dall'operatore indiretto, l'iteratore può anche essere derenziato allo stesso modo. Esistono diversi tipi di iteratori per il set in C++. Questo articolo spiega i diversi iteratori per il set e come usarli.

Un programma per codificare il set sopra o qualsiasi set, dovrebbe iniziare con quanto segue:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;

La prima riga include la libreria iostream. Questo è necessario per il terminale (console). La seconda riga include la libreria impostata. Questo è necessario per la programmazione set. La terza riga include la libreria di stringhe. Per utilizzare le stringhe, la classe di stringa deve essere inclusa; Altrimenti, sono i puntatori delle stringhe che verranno ordinate e non i letterali alfabetici di stringa stessi. Queste sono tutte sub-bibrandi dalla biblioteca standard principale, in C++. Std nel titolo di questo articolo significa standard. La quarta riga non è una direttiva. È un'affermazione. Insiste sul fatto che qualsiasi nome utilizzato nel programma che non è preceduto dallo spazio dei nomi utente proviene dallo spazio dei nomi standard.

La classe Iterator non deve essere inclusa. È già nella classe set.

Nota: dopo che i valori sono stati inseriti nel set, vengono ordinati internamente in ordine crescente con impostazioni predefinite.

Iteratore

Questo oggetto di classe iteratore viene restituito dalle funzioni del membro Begin () o End () della classe set. La funzione membro Begin () restituisce un iteratore che indica il primo elemento del set. La funzione membro end () restituisce un iteratore che punta subito dopo l'ultimo elemento del set.

Questo iteratore funziona con il == o != operatore, ma non funziona con gli operatori =. Sebbene questo iteratore non sia ufficialmente costante, il valore a cui indica potrebbe non essere modificato. Il seguente codice mostra come utilizzare questo iteratore:

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

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

banana, mora, uva, frutta passione, anguria,

Per modificare (modificare) il valore di un set, la funzione di cancellazione del set deve essere utilizzata per cancellare l'elemento. Successivamente, può essere inserito un nuovo valore. Dopo l'inserimento, ci sarà l'ordinamento interno e il valore potrebbe non adattarsi esattamente dove fosse il vecchio valore. Modificare o modificare il valore (o l'elemento) di un set, è la discussione, per qualche altra volta - vedi più avanti.

reverse_iterator

Questo è l'opposto dell'iteratore sopra. Questo oggetto di classe inversa_iterator viene restituito dalle funzioni membri RBEGIN () o Rend () della classe set. La funzione membro RBEGIN () restituisce un iteratore che indica l'ultimo elemento del set. La funzione membro Rend () restituisce un iteratore che punta appena prima del primo elemento del set.

Questo reverse_iterator funziona con il == o != operatore, ma non funziona con gli operatori =. Sebbene questo iteratore non sia ufficialmente costante, il valore a cui indica potrebbe non essere modificato. Il seguente codice mostra come utilizzare questo iteratore:

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: inverse_iterator iter = st.rbegin (); iter != st.rend (); iter ++)
cout << *iter << ", ";
cout << endl;

L'output è:

Anguria, frutta passione, uva, mora, banana,
ordinato in ordine invertito.

const_iterator

Questo oggetto di classe const_iterator viene restituito dalle funzioni del membro CBEGIN () o Cend () della classe set. La funzione membro RBEGIN () restituisce un const_iterator che indica il primo elemento del set. La funzione membro Rend () restituisce un const_iterator che punta subito dopo l'ultimo elemento del set.

Questo const_iterator funziona con il == o != operatore, ma non funziona con gli operatori =. Questo iteratore è ufficialmente costante e il valore a cui punta non può essere modificato. Il seguente codice mostra come utilizzare questo iteratore:

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: const_iterator iter = st.cbegin (); iter != st.Cend (); iter ++)
cout << *iter << ", ";
cout << endl;

L'output è:

banana, mora, uva, frutta passione, anguria,

const_reverse_iterator

Questo è l'opposto dell'iteratore sopra. Questo oggetto di classe const_reverse_iterator viene restituito dalle funzioni del membro Crbegin () o Crend () della classe set. La funzione membro Crbegin () restituisce un iteratore che indica l'ultimo elemento del set. La funzione membro Crend () restituisce un iteratore che punta appena prima del primo elemento del set.

Questo const_reverse_iterator funziona con il == o != operatore, ma non funziona con gli operatori =. Questo iteratore è ufficialmente costante e il valore che indica non può essere modificato. Il seguente codice mostra come utilizzare questo iteratore:

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: const_reverse_iterator iter = st.Crbegin (); iter != st.cred (); iter ++)
cout << *iter << ", ";
cout << endl;

L'output è

Anguria, frutta passione, uva, mora, banana,
ordinato in ordine invertito.

const_iterator CBEGIN () e CEND ()

cbegin () restituisce un iteratore costante incondizionato al primo elemento del set. Cend () restituisce un iteratore costante incondizionato che è subito dopo l'ultimo elemento del set. Il seguente codice mostra come usarlo:

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: const_iterator iter = st.cbegin (); iter != st.Cend (); iter ++)
cout << *iter << ", ";
cout << endl;

L'output è:

banana, mora, uva, frutta passione, anguria,
const_reverse_iterator Crbegin () e cred ()

Questo è l'opposto di quanto sopra. Il seguente codice mostra come usarlo:

impostato St ("Passion Fruit", "Banana", "Watermelon", "BlackBerry", "Grape");
per (set:: const_reverse_iterator iter = st.Crbegin (); iter != st.cred (); iter ++)
cout << *iter << ", ";
cout << endl;

L'output è:

Anguria, frutta passione, uva, mora, banana,

Conclusione

Tutti gli iteratori restituiti dalle funzioni del membro dell'oggetto set funzionano con il == o != operatore, ma non lavorare con gli operatori =. Tutti possono essere incrementati o decrementati. Tutti gli iteratori restituiti dalle funzioni del membro dell'insieme sono direttamente o indirettamente costanti. Ciò significa che i valori a cui indicano non possono essere modificati usando l'iteratore.

Per modificare (modificare) il valore di un set, la funzione di cancellazione del set deve essere utilizzata per cancellare l'elemento. Successivamente, può essere inserito un nuovo valore. Dopo l'inserimento, ci sarà l'ordinamento interno e il valore potrebbe non adattarsi esattamente dove fosse il vecchio valore. Modificare o modificare il valore (o l'elemento) di un set è la discussione per qualche altra volta - vedi più avanti.