La funzione del membro della cancellazione nel set di Std C ++

La funzione del membro della cancellazione nel set di Std C ++
Dopo che i valori sono stati inseriti in un set in C ++, i valori vengono ordinati internamente in ordine crescente quando le impostazioni sono predefinite. La classe set in C ++ ha la funzione membro Canase (). Ha quattro varianti sovraccariche che vengono esplorate in questo articolo. La funzione cancella uno o più elementi dell'oggetto set.

Un esempio di un set è:

"Plum", "BlackBerry", "Abcicot", "Strawberry", "Peach", "Papaya", "Guava"

È un insieme di nomi di frutti. Ogni valore qui è chiamato chiave. Questo è anche il set letterale in C++. È anche l'array letterale. Ed è anche l'inizializzatore_list.

Un programma C ++ che crea set e stringhe dovrebbe iniziare come segue:

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

L'inclusione della libreria iostream è per output (e input) al terminale (console). L'inclusione della libreria set è per i set. L'inclusione della libreria di stringhe è per le stringhe. Se vengono utilizzati i puntatori a Char* al posto della classe di stringhe, allora sono i puntatori per i letterali char che verranno ordinati e non i letterali alfabetici della 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 che termina in un punto e virgola. Ciò insiste sul fatto che qualsiasi nome che non è preceduto dal nome dello spazio dei nomi standard proviene dallo spazio dei nomi standard.

Nota: quando i valori sono stati inseriti nell'oggetto set, vengono ordinati ascendenti, internamente, per le impostazioni predefinite.

size_type cancella (const key_type e x)

Questo cancella la chiave, il cui nome è l'argomento della funzione membro di cancellazione () del set. Il programmatore deve sapere in anticipo che questa chiave esiste nel set. La funzione restituisce il numero di elementi cancellati dal set. Il seguente programma mostra come utilizzare questa funzione membro:

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

setst ("plum", "blackberry", "albicocca", "fragola", "pesca", "papaya", "guava");
int sz = st.cancella ("papaya");
cout<per (set :: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout<< *iter<< ", ";
cout<restituzione 0;

L'output è:

1
albicocca, mora, guava, pesca, prugna, fragola,

Iteratore Cancella (posizione iteratore)

Questa funzione membro cancella la chiave a cui indica l'iteratore. Il seguente codice illustra questo:

setst ("plum", "blackberry", "albicocca", "fragola", "pesca", "papaya", "guava");
per (set :: iterator iter = st.inizio(); iter != st.FINE(); iter ++)
cout<< *iter<< ", ";
if ("papaya" == *iter)
st.cancella (iter);

cout<per (set :: iterator ite = st.inizio(); ite != st.FINE(); ite ++)
cout<< *ite<< ", ";

cout<L'output è:

albicocca, mora, guava, papaia, guava, pesca, prugna, fragola,
albicocca, mora, guava, pesca, prugna, fragola,

"Papaya" è stato eliminato. Come è stato eliminato, Guava ha preso il suo posto dall'ordinamento interno. Ecco perché Guava è apparso due volte nella prima linea di uscita.

Iterator Erase (posizione const_iterator)

Questa funzione del membro sovraccarico è la stessa di quella sopra, tranne per il fatto che l'argomento è un iteratore costante. Restituisce ancora il normale iteratore. L'iteratore restituito punta all'elemento successivo dopo quello cancellato in base all'ordinamento interno. Il seguente programma illustra tutto ciò:

setst ("plum", "blackberry", "albicocca", "fragola", "pesca", "papaya", "guava");
Set :: iterator ite;
per (set :: const_iteratoriter = st.inizio(); iter != st.FINE(); iter ++)
cout<< *iter<< ", ";
if ("papaya" == *iter)
ite = st.cancella (iter);

cout<per (set :: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout<< *it << ", ";

cout<L'output è:

albicocca, mora, guava, papaia, guava, pesca, prugna, fragola,
pesca
albicocca, mora, guava, pesca, prugna, fragola,

Iterator Erase (const_iterator First, const_iterator Last)

"First" è un iteratore che punta a un elemento nel set ordinato. "Last" è un iteratore che punta a un elemento nel set ordinato dopo il primo. L'argomento gli iteratori sono iteratori costanti. Questa funzione membro cancella un intervallo che include l'elemento per "primo" e che esclude l'elemento per ultimo. Il seguente codice illustra questo:

setst ("plum", "blackberry", "albicocca", "fragola", "pesca", "papaya", "guava");
per (set :: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout<< *it << ", ";
Cout<Set :: const_iteratorItb = st.inizio(); Set :: const_iteratorite = st.FINE();
ITB ++; ITB ++; ite--; ite--; ite--;
Set :: iterator ite = st.cancella (ITB, ite);
per (set :: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout<< *it << ", ";

cout<L'output è:

albicocca, mora, guava, papaia, pesca, prugna, fragola,
albicocca, mora, pesca, prugna, fragola,

La gamma di "guava, papaia, pesca", esclusa "pesca", è stata rimossa.

Sostituire un valore

Il set in C ++ non ha alcuna funzione membro per sostituire un valore; E non dovrebbe averlo. Questo perché ogni volta che viene inserito un valore, c'è un completamento di riferimento del set (elenco). Quindi, non ha senso sostituire un valore la cui posizione cambierà dopo il riaffitto. Tuttavia, se viene cancellato un valore, è possibile inserire un nuovo valore che subirà una regolazione della posizione. Nel seguente programma, viene cancellato "BlackBerry" e viene inserito "Watermelon". La dimensione totale rimane la stessa a 7.

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

setst ("plum", "blackberry", "albicocca", "fragola", "pesca", "papaya", "guava");
st.cancella ("blackberry"); st.inserire ("anguria");
per (set :: iterator it = st.inizio(); Esso != st.FINE(); it ++)
cout<< *it << ", ";
Cout<int sz = st.misurare();
cout<restituzione 0;

L'output è:

albicocca, guava, papaia, pesca, prugna, fragola, anguria,
7

Conclusione

In C ++, la classe set è nella libreria set della libreria standard C ++ principale. La classe SET ha quattro funzioni membri sovraccarichi (). Un singolo elemento può essere cancellato. È possibile cancellare anche una serie di elementi che escludono l'ultimo elemento. Dopo ogni azione di cancellazione, il set viene rinnovato internamente.

Il set in C ++ non ha alcuna funzione membro per sostituire un valore; E non dovrebbe averlo. Questo perché ogni volta che viene inserito un valore è un completamento di refigurazione del set (elenco). Quindi, non ha senso sostituire un valore la cui posizione cambierà dopo il riaffitto.