Ungeordnete Menge mithilfe von STL sortieren

C++C++Beginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernst du, wie man eine ungeordnete Menge in der Programmiersprache C++ sortiert. Du wirst die grundlegenden Konzepte der ungeordneten Menge und deren Implementierung kennenlernen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/FunctionsGroup -.-> cpp/function_parameters("Function Parameters") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/operators -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/function_parameters -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/output -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/user_input -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/files -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/standard_containers -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} cpp/code_formatting -.-> lab-96215{{"Ungeordnete Menge mithilfe von STL sortieren"}} end

Terminal öffnen und Arbeitsverzeichnis einrichten

Um zu beginnen, öffne das Terminal und gib den folgenden Befehl ein, um in das Verzeichnis project zu navigieren:

cd project

Erstellen einer C++-Datei

Erstelle nun in dem Verzeichnis project eine neue Datei namens main.cpp. In dieser Datei wird der Code zum Sortieren der ungeordneten Menge enthalten sein.

touch main.cpp

Code schreiben

Kopiere und füge folgenden Code in die Datei main.cpp ein.

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool cmp(int x, int y)
{
    if (x > y)
        return true;
    else
        return false;
}

// Funktion, um die Elemente der ungeordneten Menge mit einem Iterator auszugeben
void show(unordered_set<int> s)
{
    // Deklarieren eines Iterators, um durch die ungeordnete Menge zu iterieren
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; // Zugreifen auf die Elemente der ungeordneten Menge mit *, da i die Adresse jedes Elements speichert
    }

    cout << endl;
}

int main()
{
    cout << "\n\nWillkommen bei LabEx :-)\n\n\n";
    cout << " =====  Programm zur Demonstration des Sortierens einer ungeordneten Menge in C++  ===== \n\n\n\n";

    cout << " *** Die ungeordnete Menge entfernt automatisch doppelte Elemente und behält eine zufällige Anordnung bei. *** \n\n";

    cout << " *** Diese zufällige Anordnung hängt von der intern verwendeten Hash-Funktion ab. *** \n\n";

    cout << " *** Die ungeordnete Menge kann sortiert werden, indem ihre Elemente in einen Vektor kopiert werden. *** \n\n";

    // Deklaration der ungeordneten Menge (ungeordnete Menge von ganzen Zahlen)
    unordered_set<int> s;

    // Befüllen der Elemente mit der insert()-Methode.
    cout << "\n\nFüllen der ungeordneten Menge mit ganzen Zahlen in zufälliger Reihenfolge."; // Im Gegensatz zur Menge wird dies nicht automatisch sortiert

    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    cout << "\n\nDie Elemente der ungeordneten Menge vor dem Sortieren sind: ";
    show(s);

    // Deklarieren eines Vektors und Initialisieren mit den Elementen der ungeordneten Menge
    vector<int> v(s.begin(), s.end());

    // Sortieren der Vektor-Elemente in absteigender Reihenfolge mit einem benutzerdefinierten Vergleichsfunktion
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nDie Elemente der ungeordneten Menge nach dem Sortieren in absteigender Reihenfolge mit einer benutzerdefinierten Sortierfunktion sind: \n";

    // Deklarieren eines Iterators, um durch den Vektor zu iterieren
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; // Zugreifen auf die Elemente des Vektors mit *, da i die Adresse jedes Elements speichert
    }

    cout << "\n\n\n";

    return 0;
}

Code kompilieren und ausführen

Um das Programm zu kompilieren und eine ausführbare Datei zu erstellen, führe folgenden Befehl im Terminal aus:

g++ main.cpp -o main

Dieser Befehl wird eine ausführbare Datei namens main erstellen.

Um den Code auszuführen, führe folgenden Befehl aus:

./main

Im Terminal sollten Sie die Ausgabe des Programms sehen.

Das Labor abschließen

Kopiere den Endcode in die Datei ~/project/main.cpp:

// ~/project/main.cpp
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool cmp(int x, int y)
{
    if (x > y)
        return true;
    else
        return false;
}

// Funktion, um die Elemente der ungeordneten Menge mit einem Iterator auszugeben
void show(unordered_set<int> s)
{
    // Deklarieren eines Iterators, um durch die ungeordnete Menge zu iterieren
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; // Zugreifen auf die Elemente der ungeordneten Menge mit *, da i die Adresse jedes Elements speichert
    }

    cout << endl;
}

int main()
{
    cout << "\n\nWillkommen bei LabEx :-)\n\n\n";
    cout << " =====  Programm zur Demonstration des Sortierens einer ungeordneten Menge in C++  ===== \n\n\n\n";

    cout << " *** Die ungeordnete Menge entfernt automatisch doppelte Elemente und behält eine zufällige Anordnung bei. *** \n\n";

    cout << " *** Diese zufällige Anordnung hängt von der intern verwendeten Hash-Funktion ab. *** \n\n";

    cout << " *** Die ungeordnete Menge kann sortiert werden, indem ihre Elemente in einen Vektor kopiert werden. *** \n\n";

    // Deklaration der ungeordneten Menge (ungeordnete Menge von ganzen Zahlen)
    unordered_set<int> s;

    // Befüllen der Elemente mit der insert()-Methode.
    cout << "\n\nFüllen der ungeordneten Menge mit ganzen Zahlen in zufälliger Reihenfolge."; // Im Gegensatz zur Menge wird dies nicht automatisch sortiert

    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    cout << "\n\nDie Elemente der ungeordneten Menge vor dem Sortieren sind: ";
    show(s);

    // Deklarieren eines Vektors und Initialisieren mit den Elementen der ungeordneten Menge
    vector<int> v(s.begin(), s.end());

    // Sortieren der Vektor-Elemente in absteigender Reihenfolge mit einem benutzerdefinierten Vergleichsfunktion
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nDie Elemente der ungeordneten Menge nach dem Sortieren in absteigender Reihenfolge mit einer benutzerdefinierten Sortierfunktion sind: \n";

    // Deklarieren eines Iterators, um durch den Vektor zu iterieren
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; // Zugreifen auf die Elemente des Vektors mit *, da i die Adresse jedes Elements speichert
    }

    cout << "\n\n\n";

    return 0;
}

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man eine ungeordnete Menge in der C++-Programmiersprache sortiert. Sie haben die grundlegenden Konzepte der ungeordneten Menge und deren Implementierung mit Hilfe von Vektoren und der STL sort-Methode kennengelernt. Sie haben auch gelernt, wie man eine ungeordnete Menge deklariert und mit Elementen füllt.