Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Carte dans la bibliothèque de modèles standard C++ (STL) avec exemple d'impression

Qu'est-ce que std::map ?

En C++, une MAP est un conteneur associatif stockant des éléments sous une forme mappée. Chaque élément de la carte est composé d'une valeur-clé et d'une valeur mappée. Deux valeurs mappées ne peuvent pas partager les mêmes valeurs de clé.

Les valeurs clés sont bonnes pour trier et identifier les éléments de manière unique. Les valeurs mappées servent à stocker le contenu associé à la clé. Les deux types peuvent différer, mais le type de membre les combine via un type de paire qui combine les deux.

Dans ce didacticiel C++, vous apprendrez :

Pourquoi utiliser std::map ?

Voici les raisons d'utiliser la carte :

Syntaxe :

Pour déclarer std::map, utilisez cette syntaxe :

std::map<key_datatype, value_datatype>map_name; 

Par exemple :

map<string, int> my_map; 

Nous avons déclaré une carte nommée my_map. La carte aura une chaîne comme clé types de données et entier comme valeurs type de données.

Types de membres :

Les fonctions membres peuvent utiliser les types de membres suivants comme paramètres ou type de retour :

Fonctions intégrées

std ::map est livré avec des fonctions intégrées. Certains d'entre eux incluent :

Itérer sur les éléments de la carte

Vous pouvez parcourir les éléments de la carte. Nous devons simplement créer un itérateur et l'utiliser pour cela.
Par exemple :

Exemple 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;
	}
}

Sortie :

Voici une capture d'écran du code :

Explication du code :

  1. Inclure le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête de chaîne dans notre code pour utiliser ses fonctions.
  3. Incluez le fichier d'en-tête de carte dans notre code pour utiliser ses fonctions.
  4. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  5. Appelez la fonction main(). Le { marque le début du corps de la fonction.
  6. Créez une carte nommée Students où les clés seront des nombres entiers et les valeurs seront des chaînes.
  7. Insérez des valeurs dans la carte Élèves. Une clé de 200 et une valeur d'Alice seront insérées dans la carte.
  8. Insérez des valeurs dans la carte Élèves. Une clé de 201 et une valeur de John seront insérées dans la carte.
  9. Utilisez la fonction size() pour obtenir la taille de la carte nommée Students. Cela devrait renvoyer un 2.
  10. Imprimez du texte sur la console.
  11. Utilisez une boucle for pour créer un itérateur nommé it pour itérer sur les éléments de la carte nommés Students.
  12. Imprimer les valeurs de la carte Élèves sur la console.
  13. Fin du corps de la boucle for.
  14. Fin du corps de la fonction main().

Insérer des données dans std::map

Vous pouvez saisir des éléments dans std::map à l'aide de la fonction insert(). N'oubliez pas que les clés std::map doivent être uniques.

Ainsi, il vérifie d'abord si chaque clé est présente dans la carte. S'il est présent, l'entrée ne sera pas insérée, mais elle renvoie l'itérateur pour l'entrée existante. S'il n'est pas présent, l'entrée est insérée.

La fonction a les variantes suivantes :

Le insert_or_assing() fonctionne de la même manière que la fonction insert(), mais si la clé donnée existe déjà dans la carte, sa valeur sera modifiée.

Exemple 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;
}

Sortie :

Voici une capture d'écran du code :

Explication du code :

  1. Incluez le fichier d'en-tête de carte dans notre code pour utiliser ses fonctions.
  2. Inclure le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  3. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). Le { marque le début du corps de la fonction.
  5. Créez une carte nommée m où les clés seront des entiers et les valeurs seront des entiers. Trois entrées ont été faites dans la carte.
  6. Insérer une nouvelle entrée dans la carte m. Une clé de 5 et une valeur de 6 seront insérées dans la carte.
  7. Essayer de faire une entrée dans une clé déjà existante. Comme la clé 1 existe déjà dans la carte, la saisie ne sera pas effectuée.
  8. Utiliser la fonction insert_or_assign() pour insérer ou modifier une entrée existante. Puisque la clé 1 existe déjà, sa valeur sera changée en 6.
  9. Imprimez du texte sur la console. Le caractère "\t" crée un espace horizontal tandis que le caractère "\n" déplace le curseur de la souris sur la ligne suivante.
  10. Utilisez une boucle for pour créer un itérateur nommé itr pour parcourir les éléments de la carte nommée m.
  11. Imprimez les valeurs de la carte m sur la console. Le caractère "\t" crée un espace horizontal entre chaque clé et sa valeur correspondante. En revanche, le caractère "\n" déplace le curseur de la souris sur la ligne suivante après chaque itération.
  12. Fin du corps de la boucle for a.
  13. Le programme doit renvoyer une valeur en cas de réussite.
  14. Fin du corps de la fonction main().

Rechercher dans une carte

Nous pouvons utiliser la fonction find () pour rechercher des éléments dans une carte par leurs clés. Si la clé n'est pas trouvée, la fonction renvoie std::map::end. Sinon, un itérateur de l'élément recherché sera retourné.

Exemple 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';
	}
}

Sortie :

Voici une capture d'écran du code :

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions sans générer d'erreurs.
  2. Incluez le fichier d'en-tête de chaîne dans notre code pour utiliser ses fonctions sans générer d'erreurs.
  3. Incluez le fichier d'en-tête de la carte dans notre code pour utiliser ses fonctions sans générer d'erreurs.
  4. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  5. Appelez la fonction main(). Le { marque le début du corps de la fonction main().
  6. Créez une carte nommée Students dont les clés seront des nombres entiers et des chaînes de valeurs.
  7. Insérez des valeurs dans la carte Élèves. Une clé de 200 et une valeur d'Alice seront insérées dans la carte.
  8. Insérez des valeurs dans la carte Élèves. Une clé de 201 et une valeur de John seront insérées dans la carte.
  9. Recherchez la valeur associée à une clé de 201.
  10. Utilisez une instruction if pour vérifier si la valeur de la clé est trouvée.
  11. Imprimez la valeur de la clé à côté d'un texte sur la console.
  12. Fin du corps de l'instruction if.
  13. Fin du corps de la fonction main().

Supprimer des données d'une carte

Nous pouvons utiliser la fonction erase() pour supprimer une valeur d'une carte. Nous créons simplement un itérateur qui pointe vers l'élément à supprimer. L'itérateur est ensuite passé à la fonction erase().

Exemple 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;
}

Sortie :

Voici une capture d'écran du code :

Explication du code :

  1. Inclure le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête de chaîne dans notre code pour utiliser ses fonctions.
  3. Incluez le fichier d'en-tête de carte dans notre code pour utiliser ses fonctions.
  4. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  5. Appelez la fonction main(). Le { marque le début du corps de la fonction main().
  6. Créez une carte nommée my_map dont les clés seront des chaînes et des valeurs entières.
  7. Insérez des valeurs dans la carte my_map. Une clé de vache et une valeur de 1 seront insérées dans la carte.
  8. Insérez des valeurs dans la carte my_map. Une clé de Cat et une valeur de 2 seront insérées dans la carte.
  9. Ajoutez une valeur 3 dans la carte my_map avec une clé de lion.
  10. Créez un itérateur pour parcourir la carte my_map à la recherche du chat clé.
  11. Supprimez l'élément pointé par l'itérateur.
  12. Utilisez un itérateur pour parcourir les éléments de la carte my_map du début à la fin.
  13. Imprimez le contenu de la carte my_map sur la console.
  14. Le programme doit renvoyer une sortie une fois terminé avec succès.
  15. Fin du corps de la fonction main().

Résumé :


Langue C

  1. C Fonctions de la bibliothèque standard
  2. Opérateurs en C++ avec exemple :qu'est-ce que c'est, les types et les programmes
  3. Boucle do…while C++ avec exemples
  4. Instruction C++ Switch Case avec EXAMPLE
  5. Allocation dynamique C++ de tableaux avec exemple
  6. Pointeurs C++ avec exemples
  7. Surcharge d'opérateur C++ avec des exemples
  8. std ::list en C++ avec exemple
  9. Fonctions C++ avec exemples de programmes