Modi per inizializzare un set STD in C ++

Modi per inizializzare un set STD in C ++
Quello che segue è l'elenco dei colori dell'arcobaleno:
"rosso", "arancione", "giallo", "verde", "blu", "indigo", "viola"

Questo è un esempio di un set letterale in matematica e in c++. È anche un array letterale. È un insieme di stringhe. Set di numeri interi, galleggianti, doppi, ecc., sono anche possibili.

STD sta per lo standard. Questo articolo è su modi per inizializzare un set come codice. C'è una classe set in un modulo nella libreria standard C ++. Inizializzazione qui, significa dare valori all'insieme al momento della creazione. La creazione di un set sta costruendo il set.

Un set può essere costruito con i valori iniziali. Un set può anche essere costruito vuoto e quindi i valori inseriti dopo la creazione.

Il modulo SET (Sub Library) deve essere incluso nel programma prima che un oggetto set possa essere creato e inizializzandolo contemporaneamente. Un programma C ++ che coinvolge set dovrebbe iniziare come segue:

#includere
#includere
Utilizzo dello spazio dei nomi std;

La prima riga in questo segmento di codice include la libreria iostream (sub). Se l'output (e l'input) è per il terminale (console), la libreria iostream deve essere inclusa. La seconda riga include la libreria set (sub); questo è un must. La terza riga non è una direttiva; è un'affermazione. Insiste sul fatto che qualsiasi nome usato senza precederlo con uno spazio dei nomi utente proviene dallo spazio dei nomi standard C ++.

Il resto di questo articolo spiega diversi modi di inizializzare l'insieme durante la costruzione con i diversi metodi di costruzione. Alla fine dell'articolo, viene affrontato i valori di aggiunta (inserimento) al set vuoto.

set (inizializer_list, const confront & = confront (), const allocatore & = allocator ())

Questo è un costruttore per creare un set. Il suo primo argomento è il set inizializer_list. Initializer_List è il set letterale. È lo stesso del letterale dell'array. Se il secondo e il terzo argomento non vengono digitati, verranno impiegati i loro argomenti predefiniti. Il seguente programma mostra questo costruttore in azione con la sua inizializzazione:

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

Set st ("rosso", "arancione", "giallo", "verde", "blu", "indaco", "viola");
per (set :: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Blu, verde, indaco, arancione, rosso, viola, giallo,

Si noti che l'output è ordinato in ordine crescente, mentre l'input (primo argomento) non è stato risolto.

Si noti inoltre che per usare le stringhe, la classe di stringa deve essere inclusa; Altrimenti, sono i puntatori delle stringhe che verranno ordinate e non gli stessi letterali alfabetici di stringa.

Set & Operator = (inizializer_list)

Questa è la forma del costruttore di copie del costruttore sopra. Fa ancora l'inizializzazione. Il seguente programma mostra questo costruttore in azione con la sua inizializzazione:

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

Imposta st = "rosso", "arancione", "giallo", "verde", "blu", "indaco", "viola";
per (set :: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Blu, verde, indaco, arancione, rosso, viola, giallo,

Si noti che l'output è ordinato in ordine crescente, mentre l'input (primo argomento) non è stato risolto.

Set (const set & x)

Questo costruttore crea un secondo set usando l'identificatore di un set precedente come argomento. Immediatamente dopo la creazione, ci sono due copie dello stesso contenuto. Il seguente programma mostra questo costruttore in azione con la sua inizializzazione:

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

Imposta st = "rosso", "arancione", "giallo", "verde", "blu", "indaco", "viola";
Imposta ST2 (ST); //inizializzazione
per (set :: iterator iter = st2.inizio(); iter != ST2.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Blu, verde, indaco, arancione, rosso, viola, giallo,

Si noti che l'output è ordinato in ordine crescente, mentre l'input (primo argomento) non è stato risolto.

Set & Operator = (const set & x)

Questo è un vero costruttore di copie. Fa ancora l'inizializzazione. Il seguente programma mostra questo costruttore in azione con la sua inizializzazione:

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

Imposta st = "rosso", "arancione", "giallo", "verde", "blu", "indaco", "viola";
Imposta st2 = st; //inizializzazione
per (set :: iterator iter = st2.inizio(); iter != ST2.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Blu, verde, indaco, arancione, rosso, viola, giallo,

Si noti che l'output è ordinato in ordine crescente, mentre l'input (primo argomento) non è stato risolto.

set di modelli (inputIterator first, inputterator Last, const confront & comp = confront (), const allocatore & = allocatore ());

Questo costruttore creerà un nuovo set copiando una gamma di valori da un altro set. L'intervallo inizia dal valore indicato dal primo e da, ma non include il valore indicato per ultimo. Se gli altri argomenti per il costruttore non vengono digitati, verranno impiegati i loro argomenti predefiniti. L'argomento del modello è la classe iteratore. Il seguente programma mostra questo costruttore in azione con la sua inizializzazione:

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

Imposta st = "rosso", "arancione", "giallo", "verde", "blu", "indaco", "viola";
Set :: iterator iterf = st.inizio(); iTerf ++;
Set :: iterator iterl = st.FINE(); iterl--;
Imposta ST2 (Iterf, Iterl); //inizializzazione
per (set :: iterator iter = st2.inizio(); iter != ST2.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Verde, indaco, arancione, rosso, viola,

che non è esattamente ciò che ci si potrebbe aspettare. Il motivo è il seguente:

L'ingresso è:

"rosso", "arancione", "giallo", "verde", "blu", "indigo", "viola"

Quindi, ci si potrebbe aspettare che "rosso" e "viola" sarebbero stati omessi. Invece, era "blu" e "giallo" a omettere. Ora, quando un set non ordinato viene inserito in un set, viene ordinato. Dall'elenco ordinato, i valori alle estremità estreme sono stati omessi.

Set e inserto vuoto ()

Il seguente programma crea un set vuoto prima che i valori vengano inseriti:

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

Imposta ST;
st.inserire ("rosso"); st.inserire ("arancione"); st.inserire ("giallo"); st.inserire ("verde");
st.inserire ("blu"); st.inserire ("Indigo"); st.inserire ("viola");
per (set :: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

Blu, verde, indaco, arancione, rosso, viola, giallo,

Si noti che l'output è ordinato in ordine crescente, mentre l'input (primo argomento) non è stato risolto.

Conclusione

L'inizializzazione è quando vengono aggiunti i valori quando viene creato il set. Dopo questa fase, i valori vengono ordinati ascendenti con le impostazioni predefinite. I modi comuni per inizializzare un set in C ++ coinvolgono la costruzione convenzionale e la costruzione. Sono stati spiegati sopra.

Chrys