0Pricing
C++ Academy · Lektion

std::set

Geordnete eindeutige Elemente

std::set ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist std::set?

std::set speichert eindeutige Elemente in sortierter Reihenfolge. Es gibt keine Duplikate, und Suchen erfolgen in logarithmischer Zeit.

  • Die Schlüssel sind zugleich die Werte.
  • Ideal für Mitgliedschaftsprüfungen und das Entfernen von Duplikaten.
#include <iostream>
#include <set>

int main() {
    std::set<int> s{3, 1, 2, 1, 3};
    for (int x : s) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Werte einfügen

Verwenden Sie insert(), um Elemente hinzuzufügen. Das Einfügen eines bereits vorhandenen Werts wird einfach ignoriert.

#include <iostream>
#include <set>

int main() {
    std::set<std::string> s;
    s.insert("apple");
    s.insert("banana");
    s.insert("apple");
    std::cout << s.size() << " unique items\n";
    return 0;
}

Rückgabewert von insert

insert() gibt ein pair zurück, dessen .second-Wert ein boolescher Wert ist, der angibt, ob das Einfügen tatsächlich stattgefunden hat.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{1, 2};
    auto r = s.insert(2);
    std::cout << std::boolalpha << "inserted: " << r.second << '\n';
    auto r2 = s.insert(5);
    std::cout << "inserted: " << r2.second << '\n';
    return 0;
}

Mitgliedschaft prüfen

Verwenden Sie count() oder in C++20 contains(), um zu prüfen, ob ein Wert vorhanden ist.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{10, 20, 30};
    std::cout << s.count(20) << '\n';
    std::cout << s.count(99) << '\n';
    return 0;
}

Elemente finden

find() gibt einen Iterator auf das passende Element zurück oder end(), wenn es nicht vorhanden ist.

#include <iostream>
#include <set>

int main() {
    std::set<std::string> s{"red", "green", "blue"};
    auto it = s.find("green");
    std::cout << (it != s.end() ? "found" : "missing") << '\n';
    return 0;
}

Elemente löschen

erase() entfernt einen Wert anhand des Schlüssels und gibt zurück, wie viele Werte entfernt wurden (0 oder 1).

#include <iostream>
#include <set>

int main() {
    std::set<int> s{1, 2, 3, 4};
    s.erase(3);
    for (int x : s) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Sortierte Reihenfolge

Elemente werden immer in aufsteigender Reihenfolge durchlaufen, unabhängig davon, in welcher Reihenfolge sie eingefügt wurden.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{50, 10, 40, 20, 30};
    for (int x : s) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Daten deduplizieren

Werte in ein Set einzufügen ist eine schnelle Möglichkeit, Duplikate zu entfernen und gleichzeitig zu sortieren.

#include <iostream>
#include <set>
#include <vector>

int main() {
    std::vector<int> v{4, 2, 4, 1, 2, 3, 1};
    std::set<int> unique(v.begin(), v.end());
    for (int x : unique) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

lower_bound und upper_bound

Da das Set geordnet ist, können Sie mit lower_bound() und upper_bound() Bereiche effizient finden.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{10, 20, 30, 40, 50};
    auto lo = s.lower_bound(20);
    auto hi = s.upper_bound(40);
    for (auto it = lo; it != hi; ++it) std::cout << *it << ' ';
    std::cout << '\n';
    return 0;
}

Größe und Leeren

size() gibt die Anzahl der Elemente an, empty() prüft, ob keine Elemente vorhanden sind, und clear() entfernt alle Elemente.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{1, 2, 3};
    std::cout << s.size() << '\n';
    s.clear();
    std::cout << std::boolalpha << s.empty() << '\n';
    return 0;
}

Bereich einfügen

Sie können einen ganzen Bereich aus einem anderen Container einfügen; Duplikate werden dabei automatisch entfernt und die Werte sortiert.

#include <iostream>
#include <set>

int main() {
    std::set<int> s{1, 2, 3};
    int more[] = {3, 4, 5};
    s.insert(more, more + 3);
    for (int x : s) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Kurze Überprüfung

Testen Sie Ihr Verständnis des Verhaltens von std::set.

Zusammenfassung

Sie haben gelernt, dass std::set:

  • Eindeutige, sortierte Werte enthält
  • doppelte Einfügevorgänge stillschweigend ignoriert
  • find, count, erase sowie geordnete Abfragen mit lower_bound/upper_bound unterstützt

Als Nächstes lernen Sie multimap und multiset kennen, die Duplikate erlauben.

Häufig gestellte Fragen

Ist die Lektion „std::set“ kostenlos?

Ja — der vollständige Text von „std::set“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „std::set“?

Geordnete eindeutige Elemente Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „std::set“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. std::map
  2. std::set
  3. multimap und multiset
  4. Benutzerdefinierte Vergleichsoperatoren
← Zurück zu C++ Academy