Vereinigung von Sätzen in C ++

Vereinigung von Sätzen in C ++
Betrachten Sie die folgenden zwei Sätze:
a = 'e', 'd', 'c', 'b', 'a'
b = 'h', 'g', 'f', 'e', ​​'d'

In C ++ wäre die Vereinigung dieser beiden Sätze:

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

Die Elemente von Set B sind mit den Elementen von Set A verbunden. Ein solches Element erscheint einmal im neuen Satz. Das neue Set ist in aufsteigender Reihenfolge mit Standardeinstellungen sortiert.

Vor C ++ 20 musste die Algorithmus -Bibliothek eher kompliziert verwendet werden, um die Vereinigung von zwei Sätzen zu haben. Zu diesem Zweck hat die Algorithmus -Bibliothek die Funktion set_union () in verschiedenen überlasteten Formen mit unterschiedlichen Argumenten. Diese überlasteten Funktionen werden heute noch verwendet, aber set_union () wird in diesem Artikel nicht behandelt.

Die festgelegte Klasse in C ++ 20 verfügt. Die Syntaxe mögen kompliziert aussehen, aber sie sind sehr einfach zu bedienen. Die Merge -Mitgliedsfunktionen werden in diesem Artikel verwendet, um zu zeigen, wie die Vereinigung von zwei Sätzen erhalten kann.

Template Void Merge (Set & Quelle)

Diese Mitgliedsfunktion erstellt eine Vereinigung von zwei Sätzen. Es kehrt ungültig zurück. Es ist der Satz von Interesse, der die Mitgliedsfunktion merge () einsetzt. Der andere Satz verschmilzt mit dem Satz von Interesse. Die Kennung des anderen Satzes ist das Argument für die Merge -Mitgliedsfunktion.

Das Argument sieht kompliziert aus, aber es ist nicht. Das Argument ist:

Satz Quelle

Dies ist die Vorlage für die SET. Es beginnt mit dem reservierten Wort, gesetzt. Denken Sie daran, dass einzelne Elemente als Schlüssel bezeichnet werden. Der erste Vorlageparameter ist also für den Schlüsseltyp. Es kann char, float, doppelt, string usw. sein. Der zweite Vorlagenparameter ist für das Vergleich der Klassenobjekte vorhanden. Wenn ausgelassen, ist das Ergebnis, dass das Set intern aufsteigend sortiert wird, intern. Der dritte Parameter in den Winkelklammern ist die Speicherzuweisung der festgelegten Elemente. Wenn ausgelassen, wird der Standard -Allocator ausgewählt. Die Quelle steht für die Kennung des anderen Satzes (oder eingehender Satz). All dieser komplexe Argumentparameter in Klammern der Syntax wird also durch die Kennung des anderen Satzes im Programm ersetzt.

Bei der Erstellung des oder des anderen Satzes von Interesse sollten diese Parameter berücksichtigt werden. Für die typische Programmierung muss nur der Schlüssel berücksichtigt werden.

Lassen Sie den folgenden Satz der Satz von Interesse sein:

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

Lassen Sie den folgenden Satz der andere Satz (oder eingehende Satz) sein, der).

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

Das folgende Programm verschmilzt das Set B in Set 'a'. Das neue Set 'A' ist die Vereinigung des alten Sets 'A' und Set 'B'. Die Werte in Set B, die nicht in Set 'A' sind, werden auf "A" bewegt, um zu setzen.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

Setzen Sie a = 'e', 'd', 'c', 'b', 'a';
set b = 'h', 'g', 'f', 'e', ​​'d';
A.zusammenführen (b);
für (set :: iterator iter = a.Start(); Iter != a.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;
Rückkehr 0;

Die Ausgabe ist:

A B C D E F G H,

Beachten Sie, dass das Union -Set mit der Standardvergleichsklasse in aufsteigender Reihenfolge arrangiert wurde.

Vorlage void merge (set && source)

Dies ist die andere überlastete Mitgliederfunktion, um zwei Sätze zusammenzuführen. Diese Mitgliedsfunktion erstellt eine Vereinigung von zwei Sätzen. Es kehrt ungültig zurück. Es ist der Satz von Interesse, der die Mitgliedsfunktion merge () einsetzt. Der andere Satz verschmilzt mit dem Satz von Interesse. Die Kennung des anderen Satzes ist das Argument für die Funktion merge (). Diesmal ist die Kennung eine Rvalue -Referenzkennung.

Das Argument sieht kompliziert aus, aber es ist nicht. Das Argument ist:

Satz&& Quelle

Dies ist die Vorlage für die SET. Es beginnt mit dem reservierten Wort, gesetzt. Denken Sie daran, dass die festgelegten einzelnen Elemente Keys heißt. Der erste Vorlageparameter ist also für den Schlüsseltyp. Es kann char, float, doppelt, string usw. sein. Der zweite Vorlagenparameter ist für das Vergleich der Klassenobjekte vorhanden. Wenn ausgelassen, ist das Ergebnis, dass das Set intern aufsteigend sortiert wird, intern. Der dritte Parameter in den Winkelklammern ist die Speicherzuweisung der festgelegten Elemente. Wenn ausgelassen, wird der Standard -Allocator ausgewählt. Die Quelle in diesem Fall steht für die RValue -Referenzkennung des anderen Satzes (oder eingehender Satz). All dieser komplexe Argumentparameter in Klammern der Syntax wird also durch die RValue -Referenzkennung des anderen im Programmssatzes ersetzt. Die doppelten Ampere und && in diesem Fall bedeuten eine RValue -Referenz. Hier unterscheidet sich diese Funktion von den vorherigen.
Bei der Erstellung des oder des anderen Satzes von Interesse sollten diese Parameter berücksichtigt werden. Für die typische Programmierung muss nur der Schlüssel berücksichtigt werden.

Lassen Sie den folgenden Satz der Satz von Interesse sein:

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

Lassen Sie den folgenden Satz wörtlich sein, seien Sie der andere Satz (oder eingehende Satz).

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

Das folgende Programm verschmilzt das Set B in Set 'a'. Das neue Set 'A' ist die Vereinigung des alten Sets 'A' und Set 'B'. Die Werte in Set B, die nicht in Set 'A' sind, werden auf "A" bewegt, um zu setzen.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

Satz a = 'e', 'd', 'c', 'b', 'a';
Satz&& b = 'h', 'g', 'f', 'e', ​​'d';
A.zusammenführen (b);
für (set:: iterator iter = a.Start(); Iter != a.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;
Rückkehr 0;

Die Ausgabe ist:

A B C D E F G H,

Beachten Sie, dass das Union -Set mit der Standardvergleichsklasse in aufsteigender Reihenfolge arrangiert wurde.

Abschluss

Die Vereinigung von zwei Sätzen hat auch beide Sätze zusammengeführt. Die vordefinierte Set -Klasse in C ++ hat zu diesem Zweck zwei überlastete Elementfunktionen. Der eingehende Satz (oder der andere Satz) verschmilzt mit dem Satz von Interesse. Der Satz von Zinsen setzt die Merge () -Mitgliedsfunktion ein. Die Kennung des eingehenden Satzes ist das Argument der Merge () -Funktion. Es werden nur Elemente, die nicht im Interesse sind. Die SET -Klasse befindet sich in der SET -Bibliothek und muss in das Programm aufgenommen werden.