Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Karte in C++ Standard Template Library (STL) mit Druckbeispiel

Was ist std::map?

In C++ eine MAP ist ein assoziativer Container, der Elemente in einer zugeordneten Form speichert. Jedes Element in der Zuordnung besteht aus einem Schlüsselwert und einem zugeordneten Wert. Zwei zugeordnete Werte können nicht dieselben Schlüsselwerte haben.

Die Schlüsselwerte eignen sich gut zum Sortieren und eindeutigen Identifizieren von Elementen. Die zugeordneten Werte dienen zum Speichern von Inhalten, die dem Schlüssel zugeordnet sind. Die beiden können sich in ihrem Typ unterscheiden, aber der Mitgliedstyp kombiniert sie über einen Paartyp, der beide kombiniert.

In diesem C++-Tutorial lernen Sie:

Warum std::map verwenden?

Hier sind Gründe für die Verwendung von map:

Syntax:

Um std::map zu deklarieren, verwenden Sie diese Syntax:

std::map<key_datatype, value_datatype>map_name; 

Zum Beispiel:

map<string, int> my_map; 

Wir haben eine Map namens my_map deklariert. Die Karte hat eine Zeichenfolge als Schlüssel Datentypen und Integer als Werte Datentyp.

Mitgliedstypen:

Die Memberfunktionen können die folgenden Membertypen entweder als Parameter oder als Rückgabetyp verwenden:

Integrierte Funktionen

std::map kommt mit eingebauten Funktionen. Einige davon sind:

Iterieren über Kartenelemente

Sie können über die Kartenelemente iterieren. Wir müssen lediglich einen Iterator erstellen und ihn dafür verwenden.
Zum Beispiel:

Beispiel 1:

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

using namespace std;
int main() {

	map<int, string> Students;

	Students.insert(std::pair<int, string>(200, "Alice"));

	Students.insert(std::pair<int, string>(201, "John"));

	cout << "Map size is: " << Students.size() << endl;

	cout << endl << "Default map Order is: " << endl;

	for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {

		cout << (*it).first << ": " << (*it).second << endl;
	}
}

Ausgabe:

Hier ist ein Screenshot des Codes:

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  2. Fügen Sie die String-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  3. Fügen Sie die Map-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  4. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  5. Rufen Sie die Funktion main() auf. Das { markiert den Beginn des Hauptteils der Funktion.
  6. Erstellen Sie eine Map namens Students, in der die Schlüssel Integer und die Werte Strings sind.
  7. Fügen Sie Werte in die Map Students ein. Ein Schlüssel von 200 und ein Wert von Alice werden in die Karte eingefügt.
  8. Fügen Sie Werte in die Map Students ein. Ein Schlüssel von 201 und ein Wert von John werden in die Karte eingefügt.
  9. Verwenden Sie die size()-Funktion, um die Größe der Map namens Students zu erhalten. Dies sollte eine 2 zurückgeben.
  10. Text auf der Konsole ausgeben.
  11. Verwenden Sie eine for-Schleife, um einen Iterator mit dem Namen it zu erstellen, der die Elemente der Map mit dem Namen Students durchläuft.
  12. Drucken Sie die Werte der Map Students auf der Konsole.
  13. Ende des Körpers der for-Schleife.
  14. Ende des Hauptteils der main()-Funktion.

Einfügen von Daten in std::map

Sie können Elemente mit der Funktion insert() in std::map eingeben. Denken Sie daran, dass die std::map-Schlüssel eindeutig sein müssen.

Es prüft also zuerst, ob jeder Schlüssel in der Karte vorhanden ist. Wenn es vorhanden ist, wird der Eintrag nicht eingefügt, aber es wird der Iterator für den vorhandenen Eintrag zurückgegeben. Wenn es nicht vorhanden ist, wird der Eintrag eingefügt.

Die Funktion hat die folgenden Variationen:

Das insert_or_assing() Die Funktion funktioniert genauso wie die Funktion insert(), aber wenn der angegebene Schlüssel bereits in der Map existiert, wird sein Wert geändert.

Beispiel 2:

#include <map>
#include <iostream>

using namespace std;

int main() {

	map<int, int> m{ {1,3} , {2,4} , {3,5} };

	m.insert({ 5, 6 });
	m.insert({ 1, 8 });

	m.insert_or_assign(1, 6);  
	
	cout << "Key\tElement\n";
	for (auto itr = m.begin(); itr != m.end(); ++itr) {
		cout << itr->first << '\t' << itr->second << '\n';
	}
	return 0;
}

Ausgabe:

Hier ist ein Screenshot des Codes:

Code-Erklärung:

  1. Fügen Sie die Map-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  2. Fügen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  3. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Das { markiert den Beginn des Hauptteils der Funktion.
  5. Erstellen Sie eine Map namens m, in der die Schlüssel Ganzzahlen und die Werte Ganzzahlen sind. Es wurden drei Einträge in der Karte vorgenommen.
  6. Einen neuen Eintrag in die Karte einfügen m. Ein Schlüssel von 5 und ein Wert von 6 werden in die Karte eingefügt.
  7. Versuch, einen Eintrag in einen bereits existierenden Schlüssel zu machen. Da der Schlüssel 1 bereits in der Karte existiert, wird der Eintrag nicht vorgenommen.
  8. Verwenden der Funktion insert_or_assign(), um einen bestehenden Eintrag einzufügen oder zu ändern. Da der Schlüssel 1 bereits existiert, wird sein Wert auf 6 geändert.
  9. Drucken Sie etwas Text auf der Konsole. Das Zeichen „\t“ erzeugt einen horizontalen Abstand, während das Zeichen „\n“ den Mauszeiger in die nächste Zeile bewegt.
  10. Verwenden Sie eine for-Schleife, um einen Iterator namens itr zu erstellen, der die Elemente der Map namens m durchläuft.
  11. Drucken Sie die Werte der Karte m auf der Konsole. Das Zeichen „\t“ erzeugt einen horizontalen Abstand zwischen jedem Schlüssel und seinem entsprechenden Wert. Im Gegensatz dazu bewegt das Zeichen „\n“ den Mauszeiger nach jeder Iteration in die nächste Zeile.
  12. Ende des Körpers der for-Schleife.
  13. Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
  14. Ende des Hauptteils der main()-Funktion.

In einer Karte suchen

Wir können die Funktion find() verwenden, um nach Elementen in einer Karte anhand ihrer Schlüssel zu suchen. Wenn der Schlüssel nicht gefunden wird, gibt die Funktion std::map::end zurück. Andernfalls wird ein Iterator des gesuchten Elements zurückgegeben.

Beispiel 2:

#include <iostream>
#include <string>
#include <map> 
using namespace std;
int main() {
	map<int, string> Students;
	Students.insert(std::pair<int, string>(200, "Alice"));
	Students.insert(std::pair<int, string>(201, "John"));
	std::map<int, string>::iterator it = Students.find(201);
	if (it != Students.end()) {
		std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
	}
}

Ausgabe:

Hier ist ein Screenshot des Codes:

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen ohne Fehler zu verwenden.
  2. Fügen Sie die String-Header-Datei in unseren Code ein, um ihre Funktionen ohne Fehler zu verwenden.
  3. Fügen Sie die Map-Header-Datei in unseren Code ein, um ihre Funktionen ohne Fehler zu verwenden.
  4. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  5. Rufen Sie die Funktion main() auf. Das { markiert den Anfang des Hauptteils der main()-Funktion.
  6. Erstellen Sie eine Map namens Students, deren Schlüssel Integer und Werte-Strings sein werden.
  7. Fügen Sie Werte in die Map Students ein. Ein Schlüssel von 200 und ein Wert von Alice werden in die Karte eingefügt.
  8. Fügen Sie Werte in die Map Students ein. Ein Schlüssel von 201 und ein Wert von John werden in die Karte eingefügt.
  9. Suchen Sie nach dem Wert, der einem Schlüssel von 201 zugeordnet ist.
  10. Verwenden Sie eine if-Anweisung, um zu prüfen, ob der Wert für den Schlüssel gefunden wird.
  11. Den Wert des Schlüssels zusammen mit etwas Text auf der Konsole ausgeben.
  12. Ende des Hauptteils der if-Anweisung.
  13. Ende des Hauptteils der main()-Funktion.

Daten von einer Karte löschen

Wir können die Funktion erase() verwenden, um einen Wert aus einer Karte zu löschen. Wir erstellen einfach einen Iterator, der auf das zu löschende Element zeigt. Der Iterator wird dann an die Funktion erase() übergeben.

Beispiel 3:

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

using namespace std;
int main() {

	map<std::string, int> my_map;

	my_map.insert(std::make_pair("cow", 1));

	my_map.insert(std::make_pair("cat", 2));

	my_map["lion"] = 3;

	map<std::string, int>::iterator it = my_map.find("cat");

	my_map.erase(it);

	for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)

		cout << (*it).first << ": " << (*it).second << endl;

  return 0;
}

Ausgabe:

Hier ist ein Screenshot des Codes:

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  2. Fügen Sie die String-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  3. Fügen Sie die Map-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
  4. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  5. Rufen Sie die Funktion main() auf. Das { markiert den Beginn des Hauptteils der main()-Funktion.
  6. Erstellen Sie eine Map namens my_map, deren Schlüssel Strings und Integer-Werte sein werden.
  7. Füge Werte in die Map my_map ein. Ein Kuhschlüssel und ein Wert von 1 werden in die Karte eingefügt.
  8. Füge Werte in die Map my_map ein. Ein Schlüssel von Cat und ein Wert von 2 werden in die Karte eingefügt.
  9. Fügen Sie einen Wert 3 in die Karte my_map mit einem Schlüssel eines Löwen ein.
  10. Erstellen Sie einen Iterator, um die Karte my_map zu durchlaufen und nach der Schlüsselkatze zu suchen.
  11. Lösche das Element, auf das der Iterator zeigt.
  12. Verwenden Sie einen Iterator, um die Elemente der Karte my_map vom Anfang bis zum Ende zu durchlaufen.
  13. Den Inhalt der Map my_map auf der Konsole ausdrucken.
  14. Das Programm muss nach erfolgreichem Abschluss eine Ausgabe zurückgeben.
  15. Ende des Hauptteils der main()-Funktion.

Zusammenfassung:


C Sprache

  1. C-Standardbibliotheksfunktionen
  2. Operatoren in C++ mit Beispiel:Was ist, Typen und Programme
  3. C++ do…while-Schleife mit Beispielen
  4. C++ Switch Case-Anweisung mit BEISPIEL
  5. C++ Dynamische Zuordnung von Arrays mit Beispiel
  6. C++-Zeiger mit Beispielen
  7. Überladen von C++-Operatoren mit Beispielen
  8. std::list in C++ mit Beispiel
  9. C++ Funktionen mit Programmbeispielen
  10. Unterschied zwischen Struktur und Klasse:Erklärt mit C++-Beispiel