0Pricing
C++ Academy · Lektion

std::map

Geordnete Schlüssel-Wert-Speicherung

std::map ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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::map?

std::map speichert nach Schlüssel sortierte Schlüssel-Wert-Paare. Jeder Schlüssel ist eindeutig, und Suchen, Einfügen sowie Löschen erfolgen in logarithmischer Zeit.

  • Die Schlüssel werden in sortierter Reihenfolge gehalten.
  • Als Grundlage dient ein balancierter binärer Suchbaum.
#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> ages;
    ages["Alice"] = 30;
    ages["Bob"] = 25;
    std::cout << "Alice is " << ages["Alice"] << '\n';
    return 0;
}

Elemente einfügen

Sie können mit operator[], insert() oder emplace() einfügen. Die Verwendung von [] für einen fehlenden Schlüssel legt ihn mit einem Standardwert an.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m;
    m["one"] = 1;
    m.insert({"two", 2});
    m.emplace("three", 3);
    std::cout << m.size() << " entries\n";
    return 0;
}

Sortiertes Iterieren

Beim Iterieren über eine std::map werden die Schlüssel in aufsteigender Reihenfolge besucht. Jedes Element ist ein std::pair mit .first (Schlüssel) und .second (Wert).

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"banana", 3}, {"apple", 5}, {"cherry", 1}};
    for (const auto& p : m) {
        std::cout << p.first << " = " << p.second << '\n';
    }
    return 0;
}

Schlüssel finden

Verwenden Sie find(), um sicher nach einem Schlüssel zu suchen. Die Funktion gibt einen Iterator auf das Element zurück oder end(), wenn es nicht gefunden wurde.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"x", 10}, {"y", 20}};
    auto it = m.find("y");
    if (it != m.end()) {
        std::cout << "Found y = " << it->second << '\n';
    } else {
        std::cout << "Not found\n";
    }
    return 0;
}

Vorhandensein prüfen

Um zu prüfen, ob ein Schlüssel vorhanden ist, ohne ihn anzulegen, verwenden Sie count() (gibt 0 oder 1 zurück) oder in C++20 contains().

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"a", 1}};
    std::cout << m.count("a") << '\n';
    std::cout << m.count("z") << '\n';
    return 0;
}

Werte aktualisieren

Durch erneute Zuweisung zu einem Schlüssel wird sein Wert direkt aktualisiert. Die Map behält nur einen Wert pro Schlüssel.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> score;
    score["player"] = 10;
    score["player"] += 5;
    std::cout << score["player"] << '\n';
    return 0;
}

Elemente löschen

erase() entfernt ein Element anhand des Schlüssels oder eines Iterators. Bei Übergabe eines Schlüssels gibt die Funktion die Anzahl der entfernten Elemente zurück.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"a", 1}, {"b", 2}, {"c", 3}};
    m.erase("b");
    std::cout << m.size() << " left\n";
    for (const auto& p : m) std::cout << p.first << ' ';
    std::cout << '\n';
    return 0;
}

at() verwenden

at() gibt eine Referenz auf den Wert eines Schlüssels zurück und löst std::out_of_range aus, wenn der Schlüssel fehlt. Anders als [] fügt die Funktion niemals ein Element ein.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"k", 42}};
    std::cout << m.at("k") << '\n';
    std::cout << "size: " << m.size() << '\n';
    return 0;
}

Wortfrequenzen zählen

Eine klassische Verwendung von std::map ist das Zählen von Vorkommen. Der Operator [] initialisiert neue Schlüssel standardmäßig mit 0, sodass ++ einfach funktioniert.

#include <iostream>
#include <map>
#include <string>

int main() {
    std::string words[] = {"cat", "dog", "cat", "bird", "dog", "cat"};
    std::map<std::string, int> freq;
    for (const auto& w : words) freq[w]++;
    for (const auto& p : freq) std::cout << p.first << ": " << p.second << '\n';
    return 0;
}

Strukturierte Bindungen

Mit C++17 können Sie jedes Paar mithilfe von strukturierten Bindungen entpacken und dem Schlüssel sowie dem Wert lesbare Namen geben.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"red", 1}, {"green", 2}};
    for (const auto& [name, value] : m) {
        std::cout << name << " -> " << value << '\n';
    }
    return 0;
}

Prüfen, ob die Map leer ist

empty() gibt an, ob die Map keine Elemente enthält, und clear() entfernt alle Elemente auf einmal.

#include <iostream>
#include <map>

int main() {
    std::map<int, int> m{{1, 1}, {2, 4}};
    std::cout << std::boolalpha << m.empty() << '\n';
    m.clear();
    std::cout << m.empty() << '\n';
    return 0;
}

Kurze Überprüfung

Testen Sie Ihr Verständnis der Sortierung von std::map.

Zusammenfassung

Sie haben gelernt, dass std::map:

  • Eindeutige sortierte Schlüssel speichert, die Werten zugeordnet sind
  • insert, [], find, count, at und erase unterstützt
  • in aufsteigender Schlüsselreihenfolge mit Paaren iteriert, die Sie mithilfe strukturierter Bindungen entpacken können

Als Nächstes sehen Sie std::set zum Speichern ausschließlich sortierter eindeutiger Werte.

Häufig gestellte Fragen

Ist die Lektion „std::map“ kostenlos?

Ja — der vollständige Text von „std::map“ 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::map“?

Geordnete Schlüssel-Wert-Speicherung 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 1 von 4.

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

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