C ++ ungeordnete Set -Funktionen

C ++ ungeordnete Set -Funktionen
Ein Satz wird in der C ++ - Programmiersprache verwendet, um die unterschiedlichen Werte einer Liste zu halten und ihre Elemente dynamisch zu bestellen. Standardmäßig sind die Elemente der Liste in aufsteigender Reihenfolge organisiert.

Eine Hash -Tabelle wird verwendet, um einen ungeordneten Satz zu konstruieren, bei dem die Werte in die Hash -Tabellenindizes konvertiert werden, um sicherzustellen, dass das Einsetzen eines Wertes immer zufällig zugewiesen wird. Tatsache ist, dass sie gut genug arbeiten und normalerweise eine konstante Zeit für die Suchbetrieb anbieten. Alle Funktionen auf dem ungeordneten Satz erfordern normalerweise eine konstante Zeit o (1). Obwohl sie in der schlimmsten Situation basierend auf dem operativen Hash -Algorithmus bis zur linearen Zeit o (n) übertragen werden können.

Der ungeordnete Satz kann Tasten jeglicher Art enthalten, unabhängig davon. Wenn wir jedoch die Schlüssel der benutzerdefinierten Datenstrukturen deklarieren, müssen wir daher die Vergleichsmethode angeben, mit der die Schlüssel verglichen werden.

Unterschied zwischen fester und ungeordneter Set

Ein Set ist eine geordnete Sammlung verschiedener Schlüssel. Ein ungeordnetes Set ist jedoch eine Sammlung von Schlüssel, die in jeder Sequenz angeordnet werden könnten. Die Implementierung von Set als ausgewogene Baumstruktur ermöglicht es, die Reihenfolge der Komponenten beizubehalten. SET -Operationen haben eine O (log n) -Time -Komplexität, aber ein nicht ordnungsgemäßer Satz hat ein O (1). Zahlreiche Methoden sind für den ungeordneten Satz definiert. Die beliebtesten sind jedoch die Größe und leere Methode für die Speicherung, den Wert des Schlüssels und das Einfügen und Entfernen der Konfiguration. Nur die unterschiedlichen Schlüssel werden durch den ungeordneten Satz unterstützt. Für doppelte Schlüssel kann ein ungeordnetes Multiset eingesetzt werden.

Funktionen, die für nicht ordnete Sets verwendet werden

Der ungeordnete Satz hat die folgenden Methoden:

  • Inise (): Diese Funktion fügt dem Container ein neues Element hinzu.
  • End () Funktion: Es gibt einen Iterator zurück, der nach dem Ende auf das Element verweist.
  • Count () Funktion: Es zählt, wie oft ein bestimmtes Element in einem nicht ordneten Satz erscheint.
  • Find () Methode: Es findet eine Komponente im Satz.
  • Clear () Funktion: Es wird ein nicht ordnungsgemäßes Set geleert, indem alle Komponenten entfernt werden.
  • Cbegin () Funktion: Es gibt einen konstanten Iterator zurück, der dem ersten Mitglied im nicht ordneten Satz entspricht.
  • Cend () Funktion: Es gibt einen konstanten Iterator mit dem letzten Wert im nicht ordneten Satz zurück.
  • Bucket_SIZE (): In einem ungeordneten Satz gibt diese Funktion die Gesamtzahl von Elementen zurück, die in einem bestimmten Eimer vorhanden sind.
  • Erase () Funktion: Es löscht von Anfang bis Ende, ob es sich nur um eine Komponente oder eine Sammlung von Elementen handelt.
  • Size () Funktion: Es gibt den Element des nicht ordnungsgemäßen Sets an.
  • SWAP () -Funktion: Sie können die Daten von zwei ungeordneten Sätzen austauschen.
  • EMPLACE () Funktion: Fügt ein Element mit dieser Funktion einem nicht ordneten Satz hinzu.
  • MAX_SIZE (): Diese Funktion gibt die meisten Elemente zurück, die ein nicht ordentlicher Satz halten kann.
  • Leere () Methode: Es wird überprüft, ob ein ungeordneter Satz leer ist.
  • Gleicher Bereich: Es gibt einen Bereich mit allen Elementen zurück, die den vorgegebenen Wert als Wert haben.
  • Hash -Methode (): Dies ist eine unäre Methode, die nur einen Parameter akzeptiert und ihren Rückgabewert auf einem singulären size_t -Wert konstruiert.
  • Reserve () Funktion: Es wird verwendet, um die zu ändern.
  • Bucket () Funktion: Es gibt die Eimernummer des Elements zurück.
  • Bucket_Count () Funktion: Die Gesamtzahl der Eimer des nicht ordnungsgemäßen Sets wird nach dieser Methode zurückgegeben.
  • Load_factor (): Es gibt den Kapazitätsfaktor zurück, der häufig an den nicht ordnungsgemäßen Satz verwendet wird.
  • Rehash () Funktion: Sie erhöht den Eimerbereich in der ungeordneten Menge auf die definierte Anzahl oder höher.
  • MAX_LOAD_FACTOR (): Es gibt den ultimativen Ladekapazitätsindex zurück, den der nicht ordnungsgemäße Satz unterstützen kann.
  • EMPLACE_HINT () -Funktion: Bei Verwendung eines Hinweis.
  • KEY_EQ () -Funktion: Es bietet einen Booleschen Wert basierend auf dem Vergleich.

Die Ausführung verschiedener ungeordneter Funktionen in der C ++ - Sprache wird in diesem Artikel behandelt.

Beispiel 1:

Die durchschnittliche Verarbeitungszeit für die Funktionen Find (), Insert () und erase () ist konstant. Wenn der Schlüssel im definierten Satz nicht vorhanden ist, bietet die Find () -Methode eine Iterator für die end () -Funktion; Andernfalls gibt es einen Iterator zum Schlüsselattribut zurück. Um den Schlüssel zu erwerben, indem die Schlüsselwerte mit dem * Operator verwiesen werden, fungiert der Iterator als Zeiger auf die Schlüsselattribute. Das Folgende ist eine Instanz einer Erklärung für die Funktionen für Find (), Insert () und Iterationsfunktionen in einem nicht ordneten Satz.

#enthalten
Verwenden von Namespace STD;
int main ()

nicht ordnungsgemäß;
Saiten.insert ("i");
Saiten.Insert ("Liebe");
Saiten.insert ("to");
Saiten.Insert ("Play");
Saiten.insert ("badminton");
String key = "Like";
if (Saiten.Finden Sie (Schlüssel) == Saiten.Ende())
Cout<< key << " to explore " <anders
Cout<< "explore " << key <Key = "Badminton";
if (Saiten.Finden Sie (Schlüssel) == Saiten.Ende())
Cout<< key << " to explore\n" ;
anders
Cout<< "explore " << key <Cout<< "\nAll required elements : ";
Under Ordered_set :: Iterator I;
für (i = Strings.Start(); ich != Saiten.Ende(); i ++)
Cout<< (*i) <

Wir integrieren die Header -Datei in den Beginn dieses Codes. Dann geben wir den Standard -Namespace als STD ein. Dann rufen wir die main () -Funktion auf. Innerhalb dieser Funktion deklarieren wir den ungeordneten Satz. Hier verwenden wir einen ungeordneten Satz, um die Elemente der Sets zu ordnen. Wir übergeben die Zeichenfolge als Parameter der nicht ordnungsgemäßen Set -Funktion. Als nächstes setzen wir die verschiedenen Saiten in die Sets ein. Wir bestehen die zahlreichen Zeichenfolgen als Argumente der Funktion Insert (). Anschließend geben wir den Wert des Schlüssels an, indem wir das Schlüsselwort „Schlüssel“ verwenden. Die Find () -Methode wird im nächsten Schritt verwendet. Diese Funktion wird angewendet, um die erforderliche Zeichenfolge des Satzes zu finden.

Wir verwenden die End () -Methode, um die Saiten zu beenden. Diese Funktion gibt den Iterator zurück, wenn der Schlüssel im Satz nicht vorhanden ist. Der Befehl „Cout“ wird angewendet, um die Anweisung zu drucken. Dann initialisieren wir erneut einen Wert für das Schlüsselattribut "Schlüssel". Wir finden den Wert eines Attributs in der Zeichenfolge, indem wir die Funktion find () verwenden und die Zeichenfolge mit Hilfe der End () -Methode beenden. Wir wenden die Anweisung „Cout“ an, um das Ergebnis anzuzeigen. Wir iterieren über den gesamten Satz und drucken den Inhalt des Satzes mit der Anweisung "Cout". Wir verwenden die nicht ordnungsgemäße Set -Methode und deklarieren den Iterator als "Ich". Die „für“ -Schloop ist beschäftigt.

Zuerst initialisieren wir eine Variable und verwenden dann die Funktion mit Beginn (), um die angegebene Zeichenfolge zu starten. Darüber hinaus definieren wir den Zustand der Schleife. Die Funktion end () heißt. Der Wert des Iterators wird durch 1 erhöht. Am Ende wird die Anweisung "Cout" verwendet, um den Wert des Iterators anzuzeigen.

Beispiel 2:

In diesem Fall werden wir einen Code ausführen, in dem wir eine Liste verschiedener Werte deklarieren, und dann alle Duplikate aus dieser Liste durch die Verwendung der nicht ordnungsgemäßen Set -Funktion finden.

#enthalten
Verwenden von Namespace STD;
Hohlraum printduplikate (int a [], int b)

uncondeded_setIntset;
nicht ordnungsgemäß_setduplices;
für (int j = 0; j < b; j++)

if (intset.Finden Sie (a [j]) == intset.Ende())
intset.Insert (a [j]);
anders
Duplikat.Insert (a [j]);

Cout<< "The list of duplicated elements: ";
uncondeded_set :: iterator it;
für (it = duplizieren.Start(); Es != duplizieren.Ende(); es ++)
Cout<< *it << " ";

int main ()

int a [] = 11, 30, 42, 21, 94, 35, 11, 77, 62, 89, 94, 35;
int b = sizeof (a) / sizeof (int);
printduplicates (a, b);
Rückkehr 0;

Hier schließen wir die Bibliothek ein. Im nächsten Schritt verwenden wir den Standard -Namespace als STD. Wir verwenden die Print () -Methode, um das Replikat im definierten Array mithilfe eines ungeordneten Satzes anzuzeigen. Wir bieten ein Array und eine Variable, um die Ganzzahl als Argumente der PrintDuplicates () -Methode zu sprengen.

Jetzt deklarieren wir die ungeordneten Sets, um die Duplikate zu erwerben und zu retten. Die ungeordnete Set -Funktion wird verwendet. Wir übergeben die Ganzzahl als Parameter. Anschließend verwenden wir eine andere nicht ordnungsgemäße Set -Funktion, um die doppelten Elemente zu finden. Hier wenden wir die „für“ -Schloop an. Wir deklarieren eine Variable der "für" -Schloop. Dann geben wir den Zustand an. Als nächstes erhöhen wir den Wert "J". Wir rufen die Funktion find () auf, um das definierte Element im Array zu finden. Wir übergeben das spezifische Element als Argument dieser Funktion. Wenn der erforderliche Element bereits im Array vorhanden ist, setzen wir dieses Element in den doppelten Satz ein.

Wir zeigen die doppelten Werte des Arrays mit der Anweisung "Cout". Wir deklarieren die Variable "IT" des Iterators für den ungeordneten Satz. Die "für" -Schloop wird angewendet. Anschließend werden die Methoden mit Beginn () und End () innerhalb der Schleife „für“ verwendet. Danach nennen wir die main () -Funktion. Wir initialisieren eine Variable "A". Dann definieren wir die Elemente für das Array und dieses Array ist in einer Variablen „A“ gespeichert. Wir finden die Größe des erforderlichen Array. Wir übergeben das Array als Parameter dieser Funktion.

Wir teilen den resultierenden Wert durch die Größe der Ganzzahlen. Der Wert, den wir nach der Dividierung erhalten, wird in einer Variablen „B“ gespeichert,. Wir zeigen die doppelten Werte des Arrays mit Hilfe der PrintDuplicate () -Methode an. Am Ende verwenden wir den Befehl "return 0".

Beispiel 3:

Ein Datenelement kann zum nicht ordnungsgemäßen Set -Container mit der eingebauten C ++ - Standard -Vorlagenbibliotheksfunktion hinzugefügt werden - die Funktion Insert (). Jeder Element in einem ungeordneten Satz hat einen bestimmten Wert und wird nur hinzugefügt, wenn es im Satz nicht verfügbar ist. Da der Container mehrere Hashing -Methoden anwendet, wird das Einfügen automatisch an dem Punkt durchgeführt, der die Anforderungen optimal erfüllt. Infolgedessen wird die Größe des Containers durch die Anzahl der abgerufenen Elemente erheblich verbessert.

Parameter von Insert () Methode:

  • Wert: Er definiert den Wert, der dem Container hinzugefügt werden sollte.
  • Erstens, zuletzt: Iteratoren, die eine Vielzahl von Komponenten bieten. Beachten Sie, dass der Bereich alle Komponenten zwischen dem ersten und dem letzten Element umfasst, z.

Die Methode gibt ein Paar zurück, wobei das Paar :: zuerst an einen Iterator konfiguriert wird, der sich auf das neue aktualisierte Element oder die entsprechende Komponente bezieht, die bereits im Satz vorhanden ist. Wenn ein neues Datenelement hinzugefügt wird, wird das Paar :: zweite Komponente im Paar an true angepasst. Andernfalls ist es als falsch angegeben, wenn bereits ein identischer Element vorhanden ist.

Das folgende Programm zeigt die oben genannte Funktion:

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

uncondeded_set set = "montag", "tuiday";
String str = "Mittwoch";
Satz.Insert (str);
Cout<< "The set of week days is:"
<für (const string & m: set)
Cout<< m
<< " ";

Cout<Rückkehr 0;

Zunächst integrieren wir die erforderlichen Header -Dateien. Das ist für die Eingangs- und Ausgangsfunktionen verantwortlich. Die Header -Datei enthält die Erklärung der Zeichenfolgen. Der dritte hält alle ungeordneten Sätze. Wir verwenden den Standard -Namespace als STD. Dann starten wir die Codierung im Körper der Funktion main (), nachdem wir die Funktion main () aufgerufen haben. Wir verwenden den ungeordneten Satz von Strings.

Hier definieren wir die Elemente meines Sets. Wir geben die zwei Tage der Woche an. Jetzt geben wir den Wert der Zeichenfolge an, die wir in den erforderlichen Satz eingefügt werden möchten. Wir fügen diese Zeichenfolge ein, indem wir die Methode Insert () verwenden. Die Erklärung "Cout" wird verwendet, um den Text "Der Satz von Wochentagen" anzuzeigen. Wir verwenden die Anweisung "Cout" noch einmal, bevor wir den Befehl "return 0 zurückgeben" eingeben. Diese "Cout" -Schürtung druckt alle Namen der Wochentage aus.

Abschluss

Die Verwendung der nicht ordnungsgemäßen Set -Funktionen von C ++ wird in diesem Artikel behandelt. Wir haben die verschiedenen Codes für Devc ++ -Software implementiert, bei denen wir viele Funktionen im Zusammenhang mit den nicht ordneten Sätzen verwendeten. Nicht ordnungsgemäße Sets sind Datenstrukturen, die unterschiedliche Komponenten in jeder Reihenfolge enthalten und einen effizienten Zugriff auf bestimmte Elemente basierend auf ihrem Wert bieten können. In erster Linie haben wir die mehrfachen nicht ordnungsgemäßen Set -Funktionen verwendet, um zu untersuchen, wie der Code funktioniert. Mit der Methode Find () haben wir ein bestimmtes Element innerhalb des Satzes identifiziert. Mit Hilfe der Funktion End () haben wir den ungeordneten Satz beendet. In der zweiten Abbildung konstruierten wir ein Array, das verschiedene ganze Zahlen enthielt. Sowohl wiederholte als auch nicht wiederholte Werte sind im Array enthalten. Um die doppelten Werte im angegebenen Array zu finden, haben wir die Find () -Methode angewendet. Die Methode Insert () wurde im letzten Beispiel verwendet, um dem erforderlichen nicht ordneten Satz einen Wert hinzuzufügen.