Come inserire i dati in un set C ++

Come inserire i dati in un set C ++
Quello che segue è un set di sei nomi di colori:
"Gray", "White", "Aqua", "Black", "Fuchsia", "Blue"

Questa è una serie di stringhe. È possibile in C ++ avere una serie di numeri interi, una serie di galleggianti, una serie di doppi, ecc. Questo è anche un array letterale in c++. È anche un inizialezer_list. È anche il set letterale, anche se non risolto.

Per avere una serie di stringhe di cui sopra, il programma C ++ dovrebbe iniziare come segue:

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

Le prime tre righe sono direttive. L'ultima riga è una dichiarazione. Le prime tre righe includono le librerie necessarie. L'ultima riga insiste sull'uso dello spazio dei nomi standard.

La classe set ha molte funzioni dei membri sovraccarichi di insert (). Solo quattro che sono più appropriati, saranno spiegati in questo articolo. I quattro spiegati sono per set e non multiset.

Un set viene sempre ordinato internamente, ascendente per impostazione predefinita. Ogni volta che viene inserito un valore, il set viene rinnovato.

void insert (inizializer_list)

Questa funzione membro prende come argomento l'Initializer_List, che è l'array letterale (uguale al set letterale). Può anche inserire i valori in un set vuoto. La funzione restituisce vuoto. Il seguente programma mostra la funzione membro in azione:

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

impostato St;
st.Insert ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout << *it << ", ";

cout << endl;
restituzione 0;

L'output è:

Aqua, nero, blu, fucsia, grigio, bianco,

Si noti che l'output è in ordine crescente dei letterali di stringa. Se la libreria di stringhe non è inclusa e viene utilizzata const-car*, allora sono i puntatori che verrebbero ordinati e non i letterali delle stringhe.

La classe set ha un costruttore che può prendere l'inizializzatore_list. In questo caso, non sarà necessario inserire iniziali. Il seguente codice illustra questo:

impostato St ("Grey", "White", "Aqua", "Black", "Fuchsia", "Blue");
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout << *it << ", ";

cout << endl;

L'output è ancora,

Aqua, nero, blu, fucsia, grigio, bianco,

per lo stesso input; Output ordinato ascendente.

Template void Insert (InputIterator First, InputIterator Last)

Questa funzione membro inserirà un intervallo da un altro set. L'intervallo dell'altro set inizia da dove prima punta l'iteratore, ma non include il valore che l'ultimo iteratore sta indicando. La funzione restituisce vuoto. Il seguente codice illustra questo:

impostato ST2 ("Purple", "Navy", "Yellow", "Olive", "Teal", "Red", "Silver");
per (set:: iterator IT = ST2.inizio(); Esso != ST2.FINE(); it ++) cout << *it << ", "; cout << endl;
impostato:: iterator ITB2 = ST2.inizio(); impostato:: iterator ite2 = st2.FINE();
ITB2 ++; ITB2 ++; ite2--; ite2--; ite2--;
impostato St ("Grey", "White", "Aqua", "Black", "Fuchsia", "Blue");
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;
st.inserire (ITB2, Ite2);
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;

L'output è:

Navy, oliva, viola, rosso, argento, verde acqua, giallo,
Aqua, nero, blu, fucsia, grigio, bianco,
Aqua, nero, blu, fucsia, grigio, viola, rosso, bianco,

La gamma ordinata (viola, rosso, argento) dal set ST2, senza "argento" è stata inserita nel set ST. ST è stato rinnovato automaticamente per avere la terza riga dell'output.

Iterator Insert (Posizione const_iterator, const value_type e x)

Il secondo argomento di questa funzione membro è la variabile di un tipo costante-pointer-type (char). Questa funzione membro dovrebbe adattarsi al puntatore della stringa nella posizione indicata dall'iteratore che è il primo argomento. Questo non è probabile che funzionerà come è apparso a causa dell'ordinamento che si svolge dopo l'inserimento. La funzione membro restituisce un iteratore che indica l'elemento inserito. Il seguente programma illustra questo:

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

const char* str = "viola";
impostato St ("Grey", "White", "Aqua", "Black", "Fuchsia", "Blue");
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;
impostato:: const_iterator ITB = st.inizio(); ITB ++; ITB ++;
impostato:: iterator iter = st.Inserisci (ITB, STR);
cout << *iter << endl;
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;
restituzione 0;

L'output è:

Aqua, nero, blu, fucsia, grigio, bianco,
viola
Aqua, nero, blu, fucsia, grigio, viola, bianco,

Iteratore Insert (COST_Iterator Posizione, value_type && x)

Questa funzione membro è simile a quanto sopra, ma il secondo argomento è in realtà il valore letterale e non la variabile. Il seguente programma illustra questo:

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

impostato St ("Grey", "White", "Aqua", "Black", "Fuchsia", "Blue");
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;
impostato:: const_iterator ITB = st.inizio(); ITB ++; ITB ++;
impostato:: iterator iter = st.inserire (ITB, "viola");
cout << *iter << endl;
per (set:: iterator it = st.inizio(); Esso != st.FINE(); it ++) cout << *it << ", "; cout << endl;
restituzione 0;

L'output è:

Aqua, nero, blu, fucsia, grigio, bianco,
viola
Aqua, nero, blu, fucsia, grigio, viola, bianco,

Conclusione

Un set in C ++ può essere creato vuoto. Se viene creato vuoto, la funzione elemento insert () può essere utilizzata per inserire gli elementi iniziali del set. In questo caso, l'Initializer_List deve essere usato come un punto unico per la funzione di inserzione. La corrispondente funzione del membro sovraccarico, restituisce vuoto.

Un set viene sempre ordinato internamente ascendente per impostazione predefinita. Ogni volta che viene inserito un valore, il set viene rinnovato automaticamente. La libreria set deve essere inclusa per il set da codificare.

Esistono altri tre metodi set insert (). Uno restituisce vuoto e gli altri due restituiscono un iteratore che punta all'elemento inserito. Quello che restituisce vuoto prende un intervallo da un altro set e inserisce nell'insieme di interesse. L'intervallo è identificato nella sintassi dagli iteratori, prima e ultimo. L'ultimo non è incluso nella gamma inserita.

Per le altre due funzioni membri, si inserisce la variabile di un valore e l'altro inserisce il valore letterale stesso. Entrambi inseriscono in alcune posizioni previste. Le posizioni previste potrebbero non essere rispettate poiché l'ordinamento avviene dopo l'inserimento.