Erstellen Sie ein STD -Set in C ++

Erstellen Sie ein STD -Set in C ++
Ein Set in C ++ ist einem Set in Mathematik sehr ähnlich. Das Folgende ist eine Reihe von Ganzzahlen:
-5, 6, 9, 8, -2

Das Folgende ist eine Reihe von Zeichen:

'B', 'm', 'a', 'c', 't', 'o', 'q'

Im Folgenden finden Sie eine Reihe von Zeichenfolgen (Elemente auf einer Lese Tabelle):

"Lesen", "Computer", "Stift", "Bleistift", "Übungsbücher", "Lehrbücher"

In C ++ wird jeder Wert in jedem der oben genannten Sätze als Schlüssel bezeichnet.

In C ++ erlaubt ein Satz keine doppelten Werte. Ein Multiset ermöglicht jedoch noch in C ++ doppelte Werte. Dieser Artikel befasst sich mit dem festgelegten Multiset und nicht.

STD bedeutet Standard. In diesem Artikel geht es darum, wie ein Standard -Set in C erstellt wird++. Das Hinzufügen von Elementen (Werten) in den Satz wird ebenfalls erwähnt.

Bibliothek

C ++ hat eine Hauptbibliothek, die C ++ Standardbibliothek bezeichnet. Diese Bibliothek hat Unterbibliotheken, die auch in weitere Unterbibliotheken unterteilt sind, die weiter in mehr Unterbibliotheken unterteilt sind. Die unteren Unterbriebraren können als Module angesehen werden. Das Interesse der ersten Ebene der ersten Ebene wird hier als Container Library bezeichnet. Die Containers Library verfügt. Die assoziative Container-Bibliothek verfügt über eine Unter-Bibliothek namens Set Library. Diese festgelegte Bibliothek kann als Modul betrachtet werden. Um Sätze zu codieren, muss es zu Beginn des Programms wie folgt aufgenommen werden:

#enthalten
#enthalten
Verwenden von Namespace STD;

iStream sollte immer einbezogen werden, wenn das Terminal (Konsole) für die Ausgabe (und ein Eingang) verwendet werden soll. Die zweite Zeile in diesem Codesegment enthält das Set -Modul. Die dritte Zeile ist eine Aussage, die mit einem Semikolon endet, der auf der Verwendung des Standard -Namespace besteht.

Um das Programm mit dem G ++ 20 Compiler für C ++ 20 zu kompilieren, verwenden Sie den folgenden Befehl:

g ++ -std = c ++ 2a Dateiname.CPP -o -Dateiname

Führen Sie das Programm mit: aus:

./Dateinamen

Angenommen, die kompilierte Datei befindet sich im Benutzerverzeichnis (Home).

Erstellung eines Satzes

Das Erstellen oder Erstellen eines Satzes ist das Hauptthema dieses Artikels. Es gibt viele Konstruktoren für den Satz. Nur die am häufigsten verwendeten werden hier erklärt.

Erstellen eines leeren Satzes

Die folgende Anweisung erstellt einen leeren Satz:

Satz st;

Es beginnt mit dem Klassentyp. Darauf folgen Angle -Klammern, die den Typ für die Elemente (Werte) enthält. Es gibt einen Raum und dann den Namen des Satzes (ST).

Werte einfügen

Elemente können wie folgt mit der Methode Insert () der festgelegten Klasse eingefügt werden:

Satz st;
st.Insert (-5); st.Einfügen (6); st.Einfügen (9);
st.Einfügen (8); st.Insert (-2);

Der Satz -5, 6, 9, 8, -2 wurde eingefügt.

Einen Iterator zurückgeben

Die Set -Klasse hat nicht den Square Brackets -Operator wie das Array. Um die Elemente des Satzes zu scannen, wird ein Iterator benötigt. Wenn der Name des Satzes ST ist, gibt die folgende Anweisung einen Iterator zurück, der auf das erste Element des Satzes verweist:

Satz:: iterator iter = st.Start();

Schätzen Sie die Syntax dieser Aussage.

Größe des Satzes

Die folgende Erklärung gibt die Größe eines Satzes zurück:

int sz = st.Größe();

Die Variable SZ hält die Größe des Satzes.

Lesewerte des Satzes

Das folgende Programm verwendet den Iterator, um alle Werte im Satz zu lesen:

Satz st;
st.Insert (-5); st.Einfügen (6); st.Einfügen (9);
st.Einfügen (8); st.Insert (-2);
für (set:: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

-5, -2, 6, 8, 9,

Beachten Sie, wie der For-Loop und der Iterator verwendet wurden. “St.End () ”gibt den End -Iterator zurück, der kurz nach dem letzten Element zeigt.

Mit Saiten als Elemente muss das Streichermodul mit enthalten sein;

#enthalten

Betrachten Sie den folgenden Code mit String -Elementen:

Satz st;
st.Insert ("Leselampe"); st.Insert ("Computer"); st.Insert ("Pen");
st.Insert ("Bleistift"); st.Insert ("Übungsbücher"); st.insert ("Lehrbücher");
für (set:: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

Computer, Übungsbücher, Stift, Bleistift, Leselampe, Lehrbücher,

Beachten Sie, dass der Satz, wenn Werte mit dem Befehl Insert () hinzugefügt werden, intern sortiert werden.

Beachten Sie auch, dass die Stringklasse zur Verwendung von Saiten enthalten sein muss. Ansonsten sind es die Zeiger auf die Saiten, die sortiert werden und nicht die alphabetischen Literale der Streicher selbst.

set (const set & x)
Dies ist ein fester Konstruktor, der die Kennung eines anderen Satzes als Argument annehmen würde, um einen neuen Satz zu konstruieren. Der folgende Code zeigt dies:

ST ST;
st.Insert (-5); st.Einfügen (6); st.Einfügen (9); st.Einfügen (8); st.Insert (-2);
Satz ST2 (ST);
für (set:: iterator iter = ST2.Start(); Iter != ST2.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

-5, -2, 6, 8, 9,

set (initializer_list, const compare & = compare (), const allocator & = allocator ())

Dies ist ein Konstruktor, bei dem die zweite und dritte Argumente optional sind. Wenn nicht angegeben, werden die Standardwerte durch c ausgewählt++. Das erste Argument ist eine Initializer_List (Array Literal). Der folgende Code zeigt die Verwendung des Konstruktors:

Satz st ('b', 'm', 'a', 'c', 't', 'o', 'q');
für (set:: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

A, b, c, m, o, q, t,

Beachten Sie, dass die Ausgabe sortiert ist, obwohl die Eingabe eine unsortierte Initializer_List ist.

Notiz: Mit der Initializer_List können die Klammern des Konstruktoraufrufs wie im folgenden Code weggelassen werden:

Satz st 'b', 'm', 'a', 'c', 't', 'o', 'q';
für (set:: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist still:

A, b, c, m, o, q, t,

Konstruktoren kopieren

Ein Satz kann erstellt werden.

set & operator = (const set & x)
Dies weist die Kennung eines anderen Satzes der Kennung eines neuen Satzes wie gezeigt zu, also:

Satz st;
st.Insert ('B'); st.Insert ('m'); st.insert ('a'); st.Insert ('C');
st.insert ('t'); st.insert ('o'); st.insert ('q');
Satz ST2 = ST;
für (set:: iterator iter = ST2.Start(); Iter != ST2.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

A, b, c, m, o, q, t,

set & operator = (initializer_list)
Dies weist dem Kenner eines neuen Satzes wie gezeigt (Array Literal) (Array Literal) zu, also:

Satz st = 'b', 'm', 'a', 'c', 't', 'o', 'q';
für (set:: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout << *iter << ", ";
Cout << endl;

Die Ausgabe ist:

A, b, c, m, o, q, t,

Abschluss

Das Set Literal in C ++ ähnelt dem der Mathematik. Ein Set, das nicht sortiert wird. STD bedeutet Standard. Die gemeinsamen Möglichkeiten zum Erstellen eines Satzes wurden oben dargestellt.