logo

Karte in der C++-Standardvorlagenbibliothek (STL)

Karten sind Assoziative Container die Elemente auf kartierte Weise speichern. Jedes Element verfügt über einen Schlüsselwert und einen zugeordneten Wert. Keine zwei zugeordneten Werte können dieselben Schlüsselwerte haben.

std::map ist die Klassenvorlage für Kartencontainer und wird in der Header-Datei definiert.



Grundlegende std::map-Memberfunktionen

Einige grundlegende Funktionen, die mit std::map verbunden sind, sind:

  • beginnen() – Gibt einen Iterator zum ersten Element in der Karte zurück.
  • Ende() – Gibt einen Iterator zum theoretischen Element zurück, das auf das letzte Element in der Karte folgt.
  • Größe() – Gibt die Anzahl der Elemente in der Karte zurück.
  • maximale Größe() – Gibt die maximale Anzahl von Elementen zurück, die die Karte enthalten kann.
  • leer() – Gibt zurück, ob die Karte leer ist.
  • Paar einfügen (Schlüsselwert, Kartenwert) – Fügt der Karte ein neues Element hinzu.
  • löschen (Iteratorposition) – Entfernt das Element an der Position, auf die der Iterator zeigt.
  • löschen(const g) – Entfernt den Schlüsselwert „g“ aus der Karte.
  • klar() – Entfernt alle Elemente aus der Karte.

Beispiele für std::map

Die folgenden Beispiele zeigen, wie grundlegende Vorgänge an Kartencontainern ausgeführt werden.

Beispiel 1: Funktion begin() und end()

C++








// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>MP; // Einige Werte in die Karte einfügen mp['one'] = 1; mp['zwei'] = 2; mp['drei'] = 3; // Holen Sie sich einen Iterator, der auf das erste Element in der // Karte zeigt mapint>::iterator it = mp.begin(); // Durch die Karte iterieren und die Elemente drucken while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }>

>

>

Ausgabe

Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>

Komplexität der oben genannten Methode:

Zeitkomplexität: O(n) wobei n die Größe der Karte ist.

Hilfsraum: An)

Beispiel 2: size()-Funktion

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>Karte; // Einige Werte in die Karte einfügen map['one'] = 1; map['two'] = 2; map['drei'] = 3; // Drucke die Größe des Kartenausschnitts aus<< 'Size of map: ' << map.size() << endl; return 0; }>

>

Normalformen
>

Ausgabe

Size of map: 3>

Komplexität der oben genannten Methode:

Zeitkomplexität: O(1).

Beispiel 3: Map implementieren

CPP




// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;> >// insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));> >gquiz1.insert(pair<>int>,>int>>(2, 30));> >gquiz1.insert(pair<>int>,>int>>(3, 60));> >gquiz1.insert(pair<>int>,>int>>(4, 20));> >gquiz1.insert(pair<>int>,>int>>(5, 50));> >gquiz1.insert(pair<>int>,>int>>(6, 50));> >// another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::iterator itr;> >cout <<>' The map gquiz1 is : '>;> >cout <<>' KEY ELEMENT '>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << ' '; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map gquiz2(gquiz1.begin(), gquiz1.end()); // alle Elemente der Karte ausgeben gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

>

>

Ausgabe

The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>

Komplexität der oben genannten Methode:

Zeitkomplexität: O(n log(n)), da n die Größe der Karte ist
Nebenraum: An)

Beispiel 4: Map of Integers implementieren

C++




So deaktivieren Sie den Entwicklermodus

// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>Karte; // Einige Werte in die Karte einfügen map['one'] = 1; map['two'] = 2; map['drei'] = 3; // Werte im Kartencout ausgeben<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) { cout<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }>

>

>

Ausgabe

Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>

Liste aller Funktionen von std::map

Die folgende Tabelle enthält alle in der Klasse std::map definierten Funktionen.

Funktion

Definition

map::insert()

Elemente mit einem bestimmten Schlüssel in den Kartencontainer einfügen –> O(log n)

map::count()

Gibt die Anzahl der Übereinstimmungen mit dem Element mit dem Schlüsselwert „g“ in der Karte zurück. –> O(log n)

Karte equal_range()

Gibt einen Iterator von Paaren zurück. Das Paar bezieht sich auf die Grenzen eines Bereichs, der alle Elemente im Container umfasst, die einen Schlüssel haben, der k entspricht.

Karte löschen()

Wird verwendet, um Elemente aus dem Container zu löschen –> O(log n)

Karte rend()

Gibt einen umgekehrten Iterator zurück, der auf das theoretische Element direkt vor dem ersten Schlüssel-Wert-Paar in der Karte zeigt (das als sein umgekehrtes Ende betrachtet wird).

Karte rbegin()

Gibt einen umgekehrten Iterator zurück, der auf das letzte Element der Karte zeigt.

Kartensuche()

Gibt einen Iterator an das Element mit dem Schlüsselwert „g“ in der Karte zurück, falls gefunden, andernfalls wird der Iterator an das Ende zurückgegeben.

crbegin() und crend() zuordnen

crbegin() gibt einen konstanten Reverse-Iterator zurück, der auf das letzte Element im Map-Container verweist. crend() gibt einen konstanten Reverse-Iterator zurück, der auf das theoretische Element vor dem ersten Element in der Karte zeigt.

Karte cbegin() und cend()

cbegin() gibt einen konstanten Iterator zurück, der auf das erste Element im Map-Container verweist. cend() gibt einen konstanten Iterator zurück, der auf das theoretische Element zeigt, das dem letzten Element in der Multimap folgt.

Karte emplace()

Fügt den Schlüssel und sein Element in den Kartencontainer ein.

Karte max_size()

Gibt die maximale Anzahl von Elementen zurück, die ein Kartencontainer enthalten kann –> O(1)

Karte Upper_bound()

Gibt einen Iterator zum ersten Element zurück, das dem zugeordneten Wert mit dem Schlüsselwert „g“ entspricht, oder folgt definitiv dem Element mit dem Schlüsselwert „g“ in der Zuordnung

Kartenoperator=

Weist den Inhalt eines Containers einem anderen Container zu und ersetzt dessen aktuellen Inhalt.

Karte Lower_bound()

Gibt einen Iterator zum ersten Element zurück, das dem zugeordneten Wert mit dem Schlüsselwert „g“ entspricht oder definitiv nicht vor dem Element mit dem Schlüsselwert „g“ in der Zuordnung steht –> O(log n)

Karte emplace_hint()

Fügt den Schlüssel und sein Element mit einem angegebenen Hinweis in den Kartencontainer ein.

Kartenwert_comp()

Gibt das Objekt zurück, das bestimmt, wie die Elemente in der Karte angeordnet sind (standardmäßig „<“).

map key_comp()

Gibt das Objekt zurück, das bestimmt, wie die Elemente in der Karte angeordnet sind (standardmäßig „<“).

Kartengröße()

Gibt die Anzahl der Elemente in der Karte zurück.

map::empty()

Gibt zurück,ob die Karte leer ist

map::begin() und end()

begin() gibt einen Iterator zum ersten Element in der Karte zurück. end() gibt einen Iterator zum theoretischen Element zurück, das auf das letzte Element in der Karte folgt

map::operator[]

Dieser Operator wird verwendet, um auf das Element zu verweisen, das sich an der im Operator angegebenen Position befindet.

map::clear()

Entfernt alle Elemente aus der Karte.

map::at() und map::swap()

Die Funktion at() wird verwendet, um den Verweis auf das Element zurückzugeben, das dem Schlüssel k zugeordnet ist. Die Funktion swap() wird verwendet, um den Inhalt zweier Karten auszutauschen. Die Karten müssen jedoch vom gleichen Typ sein, obwohl die Größen unterschiedlich sein können.

Bullen gegen Ochsen