Unione di set in C ++

Unione di set in C ++
Considera i seguenti due set:
a = 'e', 'd', 'c', 'b', 'a'
B = 'H', 'g', 'f', 'e', ​​'d'

In C ++, l'unione di questi due set sarebbe:

a = 'a', 'b', 'c', 'd', 'e', ​​'f', 'g', 'h'

Gli elementi del set B sono uniti agli elementi del set A senza avere due volte alcun elemento che si trovava in entrambi i set. Qualsiasi elemento di questo tipo appare una volta nel nuovo set. Il nuovo set è ordinato in ordine crescente con impostazioni predefinite.

Prima di C ++ 20, la libreria dell'algoritmo doveva essere utilizzata in modo piuttosto complicato per avere l'unione di due set. A tal fine, la libreria dell'algoritmo ha la funzione set_union () in diverse forme sovraccarichi con argomenti variabili. Queste funzioni sovraccarichi sono ancora in uso oggi, ma set_union () non saranno affrontate in questo articolo.

La classe set in C ++ 20 ha due funzioni di unione () di unione sovraccarica per ottenere l'Unione di due set. Le sintassi potrebbero sembrare complicate, ma sono molto facili da usare. Le funzioni del membro di Merge verranno utilizzate in questo articolo per mostrare come ottenere l'Unione di due set.

Modello void unione (set & source)

Questa funzione membro crea un'unione di due set. Restituisce vuoto. È l'insieme di interessi che impiega la funzione membro, unione (). L'altro set si fonde con l'insieme di interesse. L'identificatore dell'altro set è l'argomento della funzione di unione.

L'argomento sembra complicato, ma non lo è. L'argomento è:

impostato fonte

Questo è il modello per il set. Inizia con la parola riservata, impostato. Ricorda, che gli elementi singoli set sono chiamati tasti. Quindi, il primo parametro del modello è per il tipo di chiave. Può essere Char, Float, Double, String, ecc. Il secondo parametro del modello è per l'oggetto Classe Confronta. Se omesso, il risultato è che il set verrà ordinato ascendente, internamente. Il terzo parametro tra parentesi angolari è per l'allocazione di memoria degli elementi set. Se omesso, viene scelto l'allocatore predefinito. La sorgente sta per l'identificatore dell'altro set (o set in arrivo). Quindi, tutto quel parametro di argomento complesso tra parentesi della sintassi viene sostituito dall'identificatore dell'altro set nel programma.

Quando si creano l'insieme di interesse o l'altro set, questi parametri dovrebbero essere presi in considerazione. Per la programmazione tipica, solo la chiave deve essere presa in considerazione.

Lascia che il seguente set sia l'insieme di interesse:

a = 'e', 'd', 'c', 'b', 'a'

Lascia che il seguente set sia l'altro set (o set in arrivo).

B = 'H', 'g', 'f', 'e', ​​'d'

Il seguente programma si fonde Imposta B in Imposta "A". Il nuovo set 'A' è l'unione del vecchio set 'A' e set 'B'. I valori nel set b che non sono nel set 'A' vengono spostati per impostare 'A'.

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

imposta a = 'e', 'd', 'c', 'b', 'a';
SET B = 'H', 'G', 'F', 'E', 'D';
UN.unire (b);
per (set :: iterator iter = a.inizio(); iter != a.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

A, B, C, D, E, F, G, H,

Si noti che il set dell'Unione è stato organizzato in ordine crescente utilizzando la classe di confronto predefinita.

modello void under (set && source)

Questa è l'altra funzione del membro sovraccarico per unire due set. Questa funzione membro crea un'unione di due set. Restituisce vuoto. È l'insieme di interessi che impiega la funzione membro, unione (). L'altro set si fonde con l'insieme di interesse. L'identificatore dell'altro set è l'argomento della funzione unione (). Questa volta, l'identificatore è un identificatore di riferimento RValue.

L'argomento sembra complicato, ma non lo è. L'argomento è:

impostato&& fonte

Questo è il modello per il set. Inizia con la parola riservata, impostato. Ricorda che gli elementi singoli set sono chiamati tasti. Quindi, il primo parametro del modello è per il tipo di chiave. Può essere Char, Float, Double, String, ecc. Il secondo parametro del modello è per l'oggetto Classe Confronta. Se omesso, il risultato è che il set verrà ordinato ascendente, internamente. Il terzo parametro tra parentesi angolari è per l'allocazione di memoria degli elementi set. Se omesso, viene scelto l'allocatore predefinito. La fonte in questo caso rappresenta l'identificatore di riferimento RValue dell'altro set (o set in arrivo). Quindi, tutto quel parametro di argomento complesso tra parentesi della sintassi viene sostituito dall'identificatore di riferimento RValue dell'altro set nel programma. La doppia ampere e, &&, in questo caso, significa riferimento. È qui che questa funzione differisce dalla precedente.
Quando si creano l'insieme di interesse o l'altro set, questi parametri dovrebbero essere presi in considerazione. Per la programmazione tipica, solo la chiave deve essere presa in considerazione.

Lascia che il seguente set sia l'insieme di interesse:

a = 'e', 'd', 'c', 'b', 'a'

Lascia il seguente set letterale, sii l'altro set (o set in arrivo).

'H', 'g', 'f', 'e', ​​'d'

Il seguente programma si fonde Imposta B in Imposta "A". Il nuovo set 'A' è l'unione del vecchio set 'A' e set 'B'. I valori nel set b che non sono nel set 'A' vengono spostati per impostare 'A'.

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

impostato a = 'e', 'd', 'c', 'b', 'a';
impostato&& b = 'h', 'g', 'f', 'e', ​​'d';
UN.unire (b);
per (set:: iterator iter = a.inizio(); iter != a.FINE(); iter ++)
cout << *iter << ", ";
cout << endl;
restituzione 0;

L'output è:

A, B, C, D, E, F, G, H,

Si noti che il set dell'Unione è stato organizzato in ordine crescente utilizzando la classe di confronto predefinita.

Conclusione

Avere l'unione di due set sta anche unendo entrambi i set. La classe set predefinita in C ++ ha due funzioni di membro sovraccarico. Il set in arrivo (o l'altro set) si fonde con l'insieme di interessi. L'insieme di interessi impiega la funzione membro Merge (). L'identificatore del set in arrivo è l'argomento della funzione unione (). Solo gli elementi che non sono nell'insieme di interessi vengono spostati dall'insieme in arrivo all'insieme di interessi. La classe set è nella libreria set e deve essere inclusa nel programma.