Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser les symboles de map::find
map::insert
map::iterator
map::value_type
la map::end
bibliothèque de modèles standard (STL) dans Visual C++.
Version du produit d’origine : Visual C++
Numéro de base de connaissances d’origine : 157159
En-tête requis
<map>
Prototypes
iterator map::end();
// Key is the data type of template argument #1 for map
iterator map::find(const Key& key);
pair<iterator, bool> map::insert(const value_type& x);
Note
Les noms de classe/paramètre dans les prototypes peuvent ne pas correspondre à la version dans le fichier d’en-tête. Certains ont été modifiés pour améliorer la lisibilité.
Description
La end()
fonction retourne un itérateur qui pointe un après la fin d’une séquence.
Recherche retourne un itérateur qui choisit le premier élément dont la clé de tri est key
égale. Si aucun élément de ce type n’existe, l’itérateur est égal end()
à .
Si la clé n’existe pas déjà, insert
l’ajoute à la séquence et retourne pair<iterator, true>
. Si la clé existe déjà, insert
ne l’ajoute pas à la séquence et retourne pair <iterator, false>
.
L’exemple suivant crée une carte d’ints à des chaînes. Dans ce cas, le mappage est de chiffres à leurs équivalents de chaîne (1 -> Un, 2 -> Deux, etc.).
Le programme lit un nombre à partir de l’utilisateur, recherche le mot équivalent pour chaque chiffre (à l’aide de la carte) et imprime le nombre en tant que série de mots. Par exemple, si l’utilisateur entre 25463, le programme répond avec : Deux cinq quatre six trois.
Exemple de code
//////////////////////////////////////////////////////////////////////
// Compile options needed: None
// <filename> : main.cpp
// Functions:
// end
// find
// insert
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////
// disable warning C4018: '<' : signed/unsigned mismatch
// okay to ignore
#pragma warning(disable: 4018)
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef map<int, string, less<int>, allocator<string> > INT2STRING;
void main()
{
// 1. Create a map of ints to strings
INT2STRING theMap;
INT2STRING::iterator theIterator;
string theString = "";
int index;
// Fill it with the digits 0 - 9, each mapped to its string counterpart
// Note: value_type is a pair for maps...
theMap.insert(INT2STRING::value_type(0,"Zero"));
theMap.insert(INT2STRING::value_type(1,"One"));
theMap.insert(INT2STRING::value_type(2,"Two"));
theMap.insert(INT2STRING::value_type(3,"Three"));
theMap.insert(INT2STRING::value_type(4,"Four"));
theMap.insert(INT2STRING::value_type(5,"Five"));
theMap.insert(INT2STRING::value_type(6,"Six"));
theMap.insert(INT2STRING::value_type(7,"Seven"));
theMap.insert(INT2STRING::value_type(8,"Eight"));
theMap.insert(INT2STRING::value_type(9,"Nine"));
// Read a Number from the user and print it back as words
for( ; ; )
{
cout << "Enter \"q\" to quit, or enter a Number: ";
cin >> theString;
if(theString == "q")
break;
// extract each digit from the string, find its corresponding
// entry in the map (the word equivalent) and print it
for(index = 0; index < theString.length(); index++){
theIterator = theMap.find(theString[index] - '0');
if(theIterator != theMap.end()) // is 0 - 9
cout << (*theIterator).second << " ";
else // some character other than 0 - 9
cout << "[err] ";
}
cout << endl;
}
}
Sortie du programme :
Enter "q" to quit, or enter a Number: 22
Two Two
Enter "q" to quit, or enter a Number: 33
Three Three
Enter "q" to quit, or enter a Number: 456
Four Five Six
Enter "q" to quit, or enter a Number: q
References
Pour obtenir les mêmes informations sur , et map::insert
, visitez map ::insert, map ::find et map ::end. map::find
map::end