C ++ Set -Funktionen

C ++ Set -Funktionen
„Wir können die zahlreichen vorteilhaften Funktionen und Tools von C ++ verwenden, um die dynamische Programmierung zu unterstützen. Eines dieser Teile ist ein Satz in der Standard -Vorlagenbibliothek, der einen Mechanismus zum effektiven Speichern von Daten auf organisierte Weise bietet. In diesem C ++ -Set -Tutorial werden wir über alle Grundlagen von C ++ - Set -Funktionen sprechen.

Die Strukturen von C ++ STL zum Halten von Elementen in einer bestimmten Reihenfolge werden als Sets bezeichnet. Ein Set muss einzigartige Komponenten haben. Jeder Element in einem Satz kann durch seinen Wert einzeln identifiziert werden, sodass sie als Schlüssel dienen. In C ++ können wir Elemente aus einem Satz hinzufügen und löschen. Wir können jedoch nicht die Werte der Komponenten ändern, da sie nach der Aufstellung in den Satz statisch sind.”

Definition von Set in c++

Wie bereits erwähnt, sind Sets genau die Art von Standard -Containern der Standard -Vorlagenbibliothek, die in C ++ verwendet werden, um Artikel genau zu speichern. Sets dürfen nur den Insertions- und Löschmethoden unterzogen werden. In einem Set -Typ -Objekt werden die Elemente automatisch in einer bestimmten Reihenfolge organisiert. Wir können die Werte der bereits bestehenden Komponenten in einem Satz nicht ändern oder aktualisieren, da die Elemente in Containern unveränderlich sind. Indem ein Gegenstand in einem Set genau definiert wird, dient es als Schlüssel für sich selbst. Die Sets sind nur aktiviert, um einen bestimmten Wert zu enthalten.

Wann ist Sätze zu verwenden?

In der Wettbewerbsprogrammierung werden Sets als Container häufig eingesetzt. Wenn es notwendig ist, Gegenstände kategorisiert zu speichern, können wir die Verwendung von Sätzen in Betracht ziehen. Beachten Sie jedoch, dass die Sets nicht die Speicherung von wiederholten Werten zulassen. Sobald es eingegeben wurde, kann der Wert nicht geändert werden.

Implementierung der Sets

Um mit Sätzen zu interagieren, sollten die 2 Haupt -Header -Dateien integriert werden. Sätze werden mit der Verwendung von Iteratoren zugegriffen. Integrieren Sie #include und #include in Ihren Code. Wir haben die Wahl, nur diese eine Header -Datei zu verwenden, anstatt diese beiden. Die Bibliothek dient als Ersatz für oben genannte Header-Dateien. Wir können diese eine Header -Datei nur anwenden, da sie alle Header -Dateien enthält. Binäre Suchbäume werden verwendet, um Sätze auf interner Ebene zu definieren.

Setzen Sie Eigenschaften in c++

Im Folgenden finden Sie einige der gemeinsamen Set -Attribute in C ++:

  • Das Merkmal der Einzigartigkeit: In C ++ muss jedes Mitglied eines Satzes unterschiedlich sein; Wiederholte Elemente werden nicht akzeptiert. Infolgedessen unterstützen Sätze in C ++ keine Wiederholung.
  • Das Merkmal der Organisation: Die Komponenten eines festgelegten Containers werden normalerweise organisiert gespeichert.
  • Die Fähigkeit, unveränderlich zu sein: Sobald Artikel in einem Satz gespeichert sind, können sie nicht geändert werden. Während Addition und Entfernung zulässig sind, ist das Aktualisieren oder Ändern der vorhandenen Komponenten des Sets nicht erforderlich.
  • Das Attribut der internen Ausführung: Ein BST wird verwendet, um logisch einen Satz in C zu erstellen++.
  • Die Merkmal der Indexierung: Da die C ++ - Standard -Vorlagenbibliothek keine Indexierung liefert, haben die Sets in C ++ auch die Funktion, unbereinigt zu werden.

Syntax von Set

Das Folgende ist die STD :: SET -Deklaration aus der Bibliothek "Set":

Parameter

  • Schlüssel: Typ der Komponente im Schlüssel dargestellt. Jede andere Datenstruktur, z. B. ein benutzerdefinierter Typ, kann anstelle des Schlüssels verwendet werden.
  • Allokatoren: Dies sind die Objekte, die für die Einbeziehung der Speicherverwaltung zuständig sind. Wann immer wir die Allokation trennen und die Schöpfung in 2 Phasen durchführen wollen, müssen wir den STD :: Allocator verwenden. Wenn sequentielle Eliminierung und dynamisches Speicher in 2 Phasen durchgeführt werden, wird es auch verwendet. Der Rückgabewert für den Typ -Argument -Allocator in allen Containern ist STD :: Allocator. Die neuen und löschlichen Betreiber sind alles, was der grundlegende Allocator für die Erwerbung und Linderung der Speicherung einsetzt.
  • Vergleichen: Ein binäres Attribut mit zwei Parametern mit einem ähnlichen Typ wie die Komponenten und einen BOOL -Rückgabewert. Wenn ein Element als vor dem Schlüssel in der Sequenzierung der Funktion definiert wird, muss die Anweisung Comp (x, y), wobei Comp ein Objekt dieser Art und x und y ist, weshalb TRUE generieren. Diese Anweisung wird vom festgelegten Objekt verwendet, um die Anordnung der Komponenten innerhalb des Containers zu bewerten und ob zwei Elementtasten gleich sind (indem sie instinktiv verglichen werden: Sie sind gleich, wenn! comp (x, y) &&!comp (y, x)).

Ein fester Container kann einzigartige Komponenten enthalten. Dies kann entweder ein Funktionsobjekt oder ein Funktionszeiger sein. Weniger ist der Standardwert und liefert die gleichen Ergebnisse wie die Verwendung des weniger als als verwendeten Ausdrucks (x

Funktionen für Sets

In C ++ könnten Sets einer Vielzahl von Operationen unterzogen werden. Bewerten wir einige der Haupt -Set -Techniken.

  • Begin () Funktion: Ein Iterator, der auf das erste Element des Satzes zeigt, wird durch diese Funktion zurückgegeben.
  • End () Funktion: Diese Methode liefert einen Iterator, der auf den Punkt neben dem letzten Element des Sets im theoretischen Ansatz zeigt.
  • Leere () Funktion: Es wird verwendet, um festzustellen, ob der Satz leer ist oder nicht.
  • Größe () Methode: Es stellt die Gesamtzahl der Elemente in einem Satz bereit.
  • MAX_SIZE () Funktion: Sie ruft die Obergrenze der Elemente eines Sets oder den höheren Wert ab, den ein Satz aufnehmen kann.
  • Rbegin (): Diese Funktion im Gegensatz zu Beginn () liefert einen umgekehrten Iterator, der auf den Endwert eines Satzes hinweist.
  • Rend (): Im Gegensatz zur Funktion end () bietet es einen umgekehrten Iterator, der logisch vor dem allerletzten Wert eines Satzes auf die Stelle hinweist.
  • ERASE () -Funktion: Wenn Sie in einem Satz verwendet werden.
  • ERASE (const_n): Diese Methode entfernt sofort den Wert „n“ aus einem Satz, wenn sie als Argument geliefert wird.
  • Einfügen (const n): Diese Methode fügt dem Satz ein neues Mitglied "n" hinzu.
  • Finden Sie (n): Es findet den Satz für das definierte Element und bietet einen Iterator, der sich auf den Ort der identifizierten Komponente bezieht. Es erzeugt einen Iterator, der auf das Ende des Gegenstands zeigt, der nicht abgerufen werden kann.
  • Count (const n): Diese Funktion zählt die Anzahl der angegebenen Wert „N“ und liefert 0 oder 1, je nachdem, ob das Element abgerufen wurde oder nicht.
  • Clear () Funktion: Es wird jedes Element aus einem Satz beseitigt.

Beispiel Nr. 1

In diesem Fall wird ein Satz initialisiert. In C ++ geben wir die verschiedenen Arten von Elementen an, die in einem Satz platziert werden, wenn es erstellt wird. Die Datenpunkte eines Satzes werden normalerweise in aufsteigender Reihenfolge gespeichert. Die größere Funktion könnte verwendet werden, um Daten in absteigender Reihenfolge zu halten. Leeres Set

  • Werte verwenden
  • Mit einem Array.
  • Mit einem anderen Satz.

Dies sind zahlreiche Techniken, um einen Satz zu deklarieren.

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

sets1;
SatzS2;
Satz S3 = 62, 17, 25, 81;
Satz S4 (S3);
int ar [] = 15, 24, 75, 51;
Set S5 (AR, AR+4);
set :: iterator i;
für (auto i = s5.Start(); ich!= S5.end (); i ++)

Cout<
Rückkehr 1;

Die Header -Dateien und würden zuerst integriert. Danach wird der Standard -Namespace verwendet. Die Funktion main () wird aufgerufen. Der erste Satz wird initialisiert und es wird ein leerer Satz sein, da es kein Element enthält. Der zweite Satz wird als leerer Set in absteigender Reihenfolge deklariert. Der neue Satz wird initialisiert, indem verschiedene ganze Zahlen hinzugefügt werden. Dieser Satz enthält vier Elemente.

Darüber hinaus werden wir einen neuen Satz mit dem Namen "S4" durch die Verwendung eines anderen Satzes "S3" initialisieren, "S3". Wir haben die Werte des S3 als die Parameter des S4 bereitgestellt. Jetzt wird das Set aus einem Array deklariert. Wir geben die Werte im Array an und speichern diese Werte dann in einer Variablen „A“. Der fünfte Satz enthält die 4 Werte des Arrays. Als nächstes definieren wir den Iterator für diese erforderlichen Sets. Wir würden die Werte aller Sätze durch die Verwendung der „für“ -Schloop erwerben.

Beispiel Nr. 2

Diese Illustration zeigt, wie die Insertions- und Löschmethoden des Sets funktionieren.

#enthalten
Verwenden von Namespace STD;
int main ()

Set S1;
S1.Einfügen (22);
S1.Einfügen (33);
S1.Einfügen (56);
S1.Einfügen (9);
S1.Einfügen (67);
S1.Einfügen (47);
S1.Einfügen (88);
set :: iterator p_1, p_2, p_3;
Cout<< " The values of the set are: \n" ;
für (p_1 = s1.Start() ; p_1 != S1.Ende() ; P_1 ++)

Cout<< *p_1 << " " ;

Cout<Satz S2 (S1.begin (), s1.Ende() );
Satz :: Iterator I;
p_2 = s1.finde (22);
p_3 = s1.finde (88);
S1.erase (p_2, p_3);
Cout<< " The values of the set after using erase() function: \n " ;
für (p_1 = s1.Start() ; p_1 != S1.Ende() ; P_1 ++)

Cout<< *p_1 << " ";

Cout<Cout<< " The values of second set are: \n" ;
für (i = s2.Start() ; ich != S2.Ende() ; i ++)

Cout<< *i<< " ";

Rückkehr 0;

Die erforderlichen Bibliotheken werden zu Beginn des Programms enthalten sein. Der Standard -Namespace wird als "std" hinzugefügt. Jetzt wird die main () -Methode aufgerufen. Lassen Sie uns verschiedene Sätze deklarieren. Wir würden die Methode Insert () aufrufen, um die Werte in den Satz hinzuzufügen. Verschiedene Zeiger werden erstellt und "p_1", "p_2" und "p_3" bezeichnet und benannt. Der Iterator wird als diese Hinweise deklariert. Die Anweisung "Cout" wird verwendet, um die Zeile "Die Werte des Satzes" darzustellen "darstellen". Jetzt wird die "für" -Schloop verwendet, um alle eingefügten Werte des Satzes anzuzeigen.

Der Beginn () würde aufgerufen, um die Werte des zu druckenden Satzes zu starten, und End () -Methoden würden angewendet, um die Werte des Satzes zu beenden. Diese Methoden werden in der „für“ -Schloop aufgerufen. Der Konstruktor des ersten Zeigers wird in der Anweisung „Cout“ definiert. Jetzt werden wir einen weiteren Satz machen, indem wir die Werte in absteigender Reihenfolge organisieren. Die Elemente der ersten und zweiten erforderlichen Sets sind gleich.

Die Funktion find () wird auf den Elementen des ersten definierten Satzes aufgerufen. Diese Funktion erhält die definierten Werte aus dem Satz. Jetzt würden wir die Methode erase () anwenden, um die Werte aus dem ersten Satz zu löschen. Die gelöschten Werte sind 22 bis 88. Die Anweisung "Cout" wird verwendet, um den Text "Die Werte der Set nach der Verwendung von Erase () -Funktion" anzuzeigen. Um die Werte anzuzeigen, wird die "für" -Schloop verwendet.

Dann wird der Konstruktor des ersten Zeigers deklariert. Jetzt verwenden wir die "für" -Schloop, um die Elemente des zweiten erforderlichen Satzes zu drucken. Die Anweisung "Cout" druckt die Zeile "Die Werte des zweiten Satzes sind". Vor dem Hinzufügen des Befehls „Rückgabe 0“ wird der Konstruktor der Iteratorvariablen erstellt.

Beispiel Nr. 3

In diesem Beispiel werden zwei Funktionen, find () und löschen, verwendet. Wenn das Element identifiziert wird, erzeugt die Find () -Methode einen Iterator, der darauf bezieht. Andernfalls bietet es einen Iterator, der sich auf das Ende des Sets bezieht. Die Elemente im Set werden mit Hilfe der ERASE () -Funktion entfernen.

#enthalten
Verwenden von Namespace STD;
int main ()

sets_1;
S_1.Einfügen (45);
S_1.Einfügen (12);
S_1.Einfügen (17);
S_1.Insert (89);
S_1.Einfügen (25);
S_1.Einfügen (14);
S_1.Einfügen (78);
S_1.Insert (34);
set :: iterator i;
Cout<<"Values of required set: \n";
für (i = s_1.Start() ; ich != S_1.Ende() ; i ++)

Cout<<*i<< " ";

Cout<Cout<< " Updated set \n " ;
S_1.löschen (s_1.begin (), s_1.finde (25));
für (i = s_1.Start() ; ich!= S_1.Ende() ; i ++)
Cout<< *i<< " " ;
Cout<Cout<< " lower bound of 45 is: \n" ;
Cout<< *s_1.lower_bound( 45 )<Cout<< " lower bound of 17 is: \n" ;
Cout<< *s_1.lower_bound( 17 ) <Cout<< " upper bound of 45 is: \n" ;
Cout<< *s_1.upper_bound( 45 ) <Cout<< "upper bound of 17 is: \n" ;
Cout<< *s_1.upper_bound( 17 ) <Rückkehr 0;

Das Programm enthält die entsprechenden Bibliotheken zu Beginn genannt . Der Standard -Namespace als „std“ wird eingeführt. Ein Hinweis auf die Funktion main () wird nun erstellt. Geben Sie zuerst die festgelegte fest. Um die Werte in den Satz aufzunehmen, würden wir die Funktion Insert () verwenden. Der Iterator wird als „Ich“ identifiziert; Die Werte des entsprechenden Satzes werden mit dem Befehl „Cout“ angezeigt. Die "für" -Schloop wird nun verwendet, um alle eingefügten Werte des Sets anzuzeigen.

Die Funktion begin () wird verwendet, um mit dem Drucken der Werte des Satzes zu beginnen, und die Methode End () würde verwendet, um die Werte des Satzes zu drucken. Diese definierten Methoden würden in der „für“ -Schloop angewendet. Die Erklärung „Cout“ erklärt den Konstruktor des Iterators. Der Text „Aktualisierter Satz“ wird mit der Cout -Anweisung angezeigt. Die Komponenten des ersten Sets würden durch die Verwendung der Find () -Funktion bestimmt. Die definierten Werte werden durch diese Funktion aus dem Satz erhalten.

Um die Werte aus dem ersten Satz zu entfernen, werden wir nun die ERASE () -Methode verwenden. Bis zu 25 Werte werden beseitigt. Verwenden einer „für“ -Schloop werden die verbleibenden Ganzzahlen vorgestellt. Die Erklärung „Cout“ liefert eine Erklärung des Iterator -Konstruktors. Untergrenze und Obergrenze für die Werte des Sets werden durchgeführt. Die Werte des Sets 45 und 17 würden der Funktion unter der unteren bode () -Funktion zur Verfügung gestellt, die dann den Befehl „Cout“ verwenden würde, um das Ergebnis zu drucken. Diese ähnlichen Werte im Satz werden mit einer oberen () -Methode () behandelt. Der Ergebniswert wird vom Befehl "Cout" gedruckt. Der Befehl "return 0" wird am Ende hinzugefügt.

Abschluss

Wir haben C ++ Set -Funktionen in diesem Handbuch besprochen. Ähnlich wie bei anderen Standardbibliothekspaketen ist der C ++ - Set von entscheidender Bedeutung. Es erleichtert Entwicklern, Werte zu extrahieren und zu manipulieren. Wir haben drei Programme implementiert. Die Initialisierung der Sets wird im ersten Beispiel behandelt. Der zweite zeigt die Ergänzungen und Umzüge der Werte aus dem Satz an. Im endgültigen Fall wählen wir ein paar Werte aus dem Satz aus und entfernen sie dann.