Partager via


Utilisez les fonctions map ::end, map ::find, map ::insert, map ::iterator et map ::value_type STL dans Visual C++

Cet article explique comment utiliser les symboles de map::findmap::insertmap::iteratormap::value_type la map::endbibliothè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::findmap::end