Sortierung von Elementen in einem C ++ - Set

Sortierung von Elementen in einem C ++ - Set
Ein Beispiel für eine Menge ist: st = 'e', 'a', 'd', 'b', 'c'

Die Eingangszeichen hier sind ungeortiert. Dieser Satz kann mit der folgenden Anweisung erstellt werden:

Satz st = 'e', 'a', 'd', 'b', 'c';

Dies ist eine Reihe von Chars. Es ist möglich, einen Satz eines anderen Typs zu haben. Was auch immer der Fall ist, um die Codierung festzulegen, die C ++ -Set -Bibliothek muss in das Programm aufgenommen werden. Betrachten Sie das folgende Programm:

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

setst = 'e', 'a', 'd', 'b', 'c';
für (set :: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout<< *iter<< ", ";
Cout<Rückkehr 0;

Die Ausgabe ist:

A, b, c, d, e,

Die Ausgabe wird aufsteigend sortiert, wenn der Eingang nicht sortiert wurde. Nachdem Elemente in ein Set eingefügt wurden, werden sie sortiert. Mit der Standardeinstellung steigt die Sortierung wie im obigen Programm auf.

Das obige Programm begann mit der Aufnahme der iostream -Bibliothek. Dies ist für die Verwendung mit dem Terminal (Konsole) erforderlich. Die nächste Zeile ist eine weitere Richtlinie, die die festgelegte Bibliothek enthält. Die nachstehende Linie ist keine Richtlinie. Es ist eine Aussage, die mit einem Semikolon endet, der darauf besteht, dass jeder Name, dem nicht „std ::“ vorangegangen ist.

Auf die Header -Linien folgen die Funktion c ++ main (). Die erste Aussage in der Hauptfunktion deklariert den Satz. Das zweite Codesegment zeigt die Werte des Satzes an, die interner Sortieren nach C erhalten haben sollen++.

Set sortiert auf Ascending

Im Standard -Namespace ist die Syntax zum Konstruktion eines Satzes tatsächlich:

Vorlage, Klassenallocator = Allocator> Klassensatz;

Hier gibt es drei Vorlagenspezialisierungen. Wenn der letzte vom Programmierer nicht gegeben wird, wird der Standardwert von C ausgewählt++. Wenn der letzte und zweite vom Programmierer nicht angegeben ist, werden ihre Standardwerte ausgewählt. Der Standardwert für die zweite Spezialisierung ist „weniger“, was bedeutet, aufsteigend sortieren. Wenn es weggelassen wird, ist das Set weiterhin aufsteigend sortiert. Wenn es als „weniger“ vorhanden ist, wird das Set aufsteigend sortiert, wie das folgende Programm zeigt:

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

Satzst = 'e', 'a', 'd', 'b', 'c';
für (set :: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout<< *iter<< ", ";
Cout<Rückkehr 0;

Beachten Sie, dass "Char" an der Stelle von "Schlüssel" in "weniger" ist. Die Ausgabe ist:

A, b, c, d, e,

aufsteigend sortiert. Das Programm beginnt mit der Aufnahme der iostream -Bibliothek. Dies ist für die Verwendung mit dem Terminal (Konsole) erforderlich. Die nächste Zeile ist eine weitere Richtlinie, die die festgelegte Bibliothek enthält. Die nachstehende Linie ist keine Richtlinie. Es ist eine Aussage, die mit einem Semikolon endet, der darauf besteht, dass jeder Name, dem nicht „std ::“ vorangegangen ist.

Auf die Header -Linien folgen die Funktion c ++ main (). Die erste Anweisung in der Hauptfunktion deklariert den Satz „weniger“ als zweite Vorlagenspezialisierung. Das zweite Codesegment zeigt die Werte des Satzes an, die eine interne Sortierung durch c angemessen hätten++.

Set sortiert abfällt

Um ein Set -sortiert abzusteigen, muss die zweite Spezialisierung einbezogen werden. Es ist "größer", wobei "Schlüssel" durch den Datentyp ersetzt wird. Weniger und größer sind vordefinierte Funktionen in der festgelegten Bibliothek. Das folgende Programm führt zu einem Satz, der sortiert wird:

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

Satzst = 'e', 'a', 'd', 'b', 'c';
für (set :: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout<< *iter<< ", ";
Cout<Rückkehr 0;

Die Ausgabe ist:

E, d, c, b, a,

sortiert absteigend. Das Programm beginnt mit der Aufnahme der iostream -Bibliothek. Dies ist für die Verwendung mit dem Terminal (Konsole) erforderlich. Die nächste Zeile ist eine weitere Richtlinie, die die festgelegte Bibliothek enthält. Die nachstehende Linie ist keine Richtlinie. Es ist eine Aussage, die mit einem Semikolon endet und darauf besteht, dass jeder Name, dem nicht „std ::“ vorangegangen ist.

Auf die Header -Linien folgen die Funktion c ++ main (). Die erste Anweisung in der Hauptfunktion deklariert den Satz „größer“ als zweite Vorlagenspezialisierung. Das zweite Codesegment zeigt die Werte des Satzes an, die eine interne Sortierung durch c angemessen hätten++.

Beobachter

Die Syntaxen für die Set -Beobachter sind:

KEY_COMPare Key_Comp () const;

Und

value_compare value_comp () const;
KEY_COMPARE KEY_COMP () const
Betrachten Sie das folgende Codesegment:
Satz> st = 'e', 'a', 'd', 'b', 'c';
bool bl = st.key_comp () ('c', 'd');
Cout << bl << endl;

Die Ausgabe ist: 1 für wahr.

key_comp () ist eine Mitgliedsfunktion der festgelegten Klasse. Es erfordert kein Argument. Es gibt ein Funktionsobjekt zurück, das eine Funktion ist, die zwei Argumente nimmt. Das Funktionsobjekt (Aufruf) wird in der obigen zweiten Anweisung als „ST) identifiziert.Key_Comp () () ”. Es wird erwartet.

Wenn sein erstes Argument im Set nach der internen Sortierung an erster Stelle steht, wird das Funktionsobjekt wahr zurückgegeben. Andernfalls gibt es false zurück. Alles, was in der obigen zweiten Anweisung codiert wird.

Wenn die Spezialisierung der Vergleichsvorlage „größer“ gewesen wäre, wäre die Ausgabe 0 für False gewesen.

value_compare value_comp () const;

Dies betrifft die Werte des Satzes von Schlüssel-/Wertpaaren - siehe später.

Abschluss

Nachdem Elemente in einen Set in C ++ eingefügt wurden, werden sie sofort intern sortiert. Wenn die Spezialisierung der Vergleichsvorlage „weniger“ ist, was die Standardeinstellung ist und weggelassen werden kann, wird die Sortierung aufsteigend erfolgen. Wenn es „größer“ ist, wird die Sortierung absteigen. "Schlüssel" in diesen Ausdrücken wird durch die Art der Werte im Satz ersetzt. Die Werte sind von einem Typ.

Ein Set benötigt also keine Sortierelementfunktion, da die Werte immer sortiert sind. Wenn ein Satz mit einigen ersten Elementen erstellt wird, werden diese Elemente sortiert. Ein Einsatz eines Elements danach führt dazu. Die Werte eines festgelegten Satzes werden als Schlüssel bezeichnet. Einige Sets können jedoch Schlüssel-/Wertpaare haben - siehe später.